Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 26 Octubre 2010, 17:01 pm



Título: [Python] carácteres y espacios
Publicado por: Meta en 26 Octubre 2010, 17:01 pm
Hola:

Ver ejercicio. (http://www.subeimagenes.com/img/sin-titulo-1-5486.jpg)

Código
  1. a = "Ten a tus amigos cerca, pero mas a tus enemigos."
  2.  
  3. for i in range(len(a)):
  4.    print a[i]

He intentado y sigo con ello lo de detectar los espacios. Estaba curioseando si esto vale. ord(" ") o el chr(32). 32 decimal es Espacio según la tabla ASCII.

http://es.wikipedia.org/wiki/ASCII

He intentado así pero no, ya que sólo cuenta números y quiero espacio que hay en la cadena.
Código
  1. a = "Ten a tus amigos cerca, pero mas a tus enemigos."
  2. contador = 0
  3. for i in range(len(a)):
  4.    print a[i]
  5.    if chr(32) == i:
  6.        contador+=1
  7.    print contador

No me sale nada. ¿Alguna sugerencia?
Código
  1. a = "Ten a tus amigos cerca, pero mas a tus enemigos."
  2. contador = 0
  3. for i in range(len(a)):
  4.    print a[i]
  5. if chr(32) == range(len(a)):
  6.    contador+=1
  7. print contador

Lo que entiendo que tengo que hacer es, acumular en una variable += la cantidad de espacios que contenga esa cadena de carácteres.

Saludo.


Título: Re: [Python] carácteres y espacios
Publicado por: criskapunk en 26 Octubre 2010, 17:19 pm
Buenas Meta

En el primer codigo:

Código
  1. for i in range(len(a)):
  2.    print a[i]

Esto creo que hace lo mismo :P

Código
  1. for i in a:
  2.    print i

Podes hacer algo asi:

Código
  1. a = "Ten a tus amigos cerca, pero mas a tus enemigos."
  2. j = 0
  3. for i in a:
  4.    if chr(32) == i:
  5.        j += 1
  6. print j

Un saludo ;)


Título: Re: [Python] carácteres y espacios
Publicado por: xassiz~ en 26 Octubre 2010, 17:24 pm
Código
  1. #!/usr/bin/env python
  2.  
  3. cadena = "Ten a tus amigos cerca, pero mas a tus enemigos."
  4.  
  5. print cadena.count(' ')


Título: Re: [Python] carácteres y espacios
Publicado por: Meta en 26 Octubre 2010, 18:12 pm
Me funciona y lo entiendo el ejercicio de arriba, muchísimas gracias.  ;-)

Ahora hay que hacer que cuente las mayúsculas.

Código
  1. c = "LA muerte esta tAn sEgUra DE su victoria, que noS Da toDA una vida de ventajas."
  2. c = 0
  3. for i in cad:
  4.    if cad.upper() == i:
  5.        c += 1
  6. print c

Que sepa el upper.() detecta las mayúsculas, perdón, las pasa de minúsculas a mayúsculas. Será por eso que no me funciona. Así que lo hago de otra manera.

Código
  1. cadena = "LA muerte esta tAn sEgUra DE su victoria, que noS Da toDA una vida de ventajas."
  2. c = 0
  3. for i in cad:
  4.    if  if (cadena >= "A" and cadena <= "Z") == i:
  5.        c += 1
  6. print c
  7.  
No funciona, resultado es 0.


Título: Re: [Python] carácteres y espacios
Publicado por: xassiz~ en 26 Octubre 2010, 18:21 pm
Te pongo dos formas:
Código
  1. #!/usr/bin/env python
  2.  
  3. cadena = "LA muerte esta tAn sEgUra DE su victoria, que noS Da toDA una vida de ventajas."
  4.  
  5. for i in cadena.replace(' ',''):
  6.    if i == i.upper():
  7.        print "%c - mayuscula" % i
  8.    else:
  9.        print "%c - minuscula" %i
  10.  

Código
  1. #!/usr/bin/env python
  2.  
  3. cadena = "LA muerte esta tAn sEgUra DE su victoria, que noS Da toDA una vida de ventajas."
  4.  
  5. for i in cadena.replace(' ',''):
  6. if i.isupper():
  7. print "%c - mayuscula" % i
  8. else:
  9. print "%c - minuscula" % i
  10.  

Mola, hacía tiempo que no programaba en python ;D


Título: Re: [Python] carácteres y espacios
Publicado por: Meta en 26 Octubre 2010, 18:29 pm
¿Qué significa el %C?

Tengo entendido que el %d, decimal, el %f pare coma flotante, el %s se que está pero no me acuerdo y el %c no tengo idea.

Hay instrucciones que has puesto que no debo usar ya que aún no he llegado con el libro, estoy en l apágina 152, ejercicio 160).

Ver libro. (http://marmota.act.uji.es/mtp/pdf/python.pdf)

Sigo intentando de mi manera.
Código
  1. cad = "LA muerte esta tAn sEgUra DE su victoria, que noS Da toDA una vida de ventajas."
  2. c = 0
  3. for i in cadena:
  4.    if (ord("A") or ord("Z")) == i:
  5.        c += 1
  6. print c


Título: Re: [Python] carácteres y espacios
Publicado por: xassiz~ en 26 Octubre 2010, 18:33 pm
%c es char (carácter).

Tu manera está mal, porque declaras "cad" y utilizas "cadena". Pero sigue siendo érronea la lógica.


Mira mi primer código, no decías que podías usar upper() ?


Título: Re: [Python] carácteres y espacios
Publicado por: Meta en 26 Octubre 2010, 18:41 pm
Si, pero el tuyo dice: isupper(), no upper().

Si funciona.

Está muy bueno tu ejemplo, como resultado da esto:
Código:
L - mayuscula
A - mayuscula
m - minuscula
u - minuscula
e - minuscula
r - minuscula
t - minuscula
e - minuscula
e - minuscula
s - minuscula
t - minuscula
a - minuscula
t - minuscula
A - mayuscula
n - minuscula
s - minuscula
E - mayuscula
g - minuscula
U - mayuscula
r - minuscula
a - minuscula
D - mayuscula
E - mayuscula
s - minuscula
u - minuscula
v - minuscula
i - minuscula
c - minuscula
t - minuscula
o - minuscula
r - minuscula
i - minuscula
a - minuscula
, - mayuscula
q - minuscula
u - minuscula
e - minuscula
n - minuscula
o - minuscula
S - mayuscula
D - mayuscula
a - minuscula
t - minuscula
o - minuscula
D - mayuscula
A - mayuscula
u - minuscula
n - minuscula
a - minuscula
v - minuscula
i - minuscula
d - minuscula
a - minuscula
d - minuscula
e - minuscula
v - minuscula
e - minuscula
n - minuscula
t - minuscula
a - minuscula
j - minuscula
a - minuscula
s - minuscula
. - mayuscula

Lo que pide es la cantidad en números las mayúsculas que hay. En este caso debe mostrar en pantalla 11.

Tu código lo guardo que es interesante, pero debo hacer lo que me piden.


Título: Re: [Python] carácteres y espacios
Publicado por: Shell Root en 26 Octubre 2010, 18:44 pm
WAIT MOMENT, XD. Aquí se te dan posibles soluciones, en algunos casos ejemplos, ahora te toca implementarlo a tus necesidades.


Título: Re: [Python] carácteres y espacios
Publicado por: Meta en 26 Octubre 2010, 18:46 pm
Eso hago pero no me sale.

Código
  1. cadena = "LA muerte esta tAn sEgUra DE su victoria, que noS Da toDA una vida de ventajas."
  2. contador = 0
  3. for i in cadena:
  4.    if (ord("A") or ord("Z")) == i:
  5.        contador += 1
  6. print contador


Título: Re: [Python] carácteres y espacios
Publicado por: Shell Root en 26 Octubre 2010, 18:49 pm
Pues,

Código
  1. #!/usr/bin/env python
  2.  
  3. cadena = "LA muerte esta tAn sEgUra DE su victoria, que noS Da toDA una vida de ventajas."
  4. sContador = 0
  5.  
  6. for i in cadena.replace(' ',''):
  7. if i.isupper():
  8. sContador += 1
  9.  
  10. print sContador


Título: Re: [Python] carácteres y espacios
Publicado por: Meta en 26 Octubre 2010, 18:54 pm
Eso lo he entendido, lo que no debo usar algo que aún no te enseña el PDF por ahora como el .replace. jejejeje. Por eso estoy maschuqueándome las neuronas por ello.

Gracias.


Título: Re: [Python] carácteres y espacios
Publicado por: xassiz~ en 26 Octubre 2010, 18:58 pm
Si, pero el tuyo dice: isupper(), no upper().
Mi primer código dice upper() no isupper().

Lo que pide es la cantidad en números las mayúsculas que hay. En este caso debe mostrar en pantalla 11.
Ponle un contador ahora y listo.

Eso lo he entendido, lo que no debo usar algo que aún no te enseña el PDF por ahora como el .replace. jejejeje. Por eso estoy maschuqueándome las neuronas por ello.
Lo puse para eliminar espacios, ya que tambien los tomaba isupper().


Título: Re: [Python] carácteres y espacios
Publicado por: criskapunk en 26 Octubre 2010, 19:06 pm
Otra forma :P

Código
  1. s = "A los Genios sE les PerDonan muChas coSas. Despues de su EjecUcion"
  2. c = 0
  3. for i in s:
  4.    if ord(i) >= 65 and ord(i) <= 90:
  5.        c+=1
  6.  
  7. print c

Un saludo


Título: Re: [Python] carácteres y espacios
Publicado por: Meta en 26 Octubre 2010, 22:48 pm
Otra forma :P

Código
  1. s = "A los Genios sE les PerDonan muChas coSas. Despues de su EjecUcion"
  2. c = 0
  3. for i in s:
  4.    if ord(i) >= 65 and ord(i) <= 90:
  5.        c+=1
  6.  
  7. print c

Un saludo

Muchas gracias.  ;-)


Título: Re: [Python] carácteres y espacios
Publicado por: Meta en 27 Octubre 2010, 15:06 pm
Estaba ahora intentando hacer lo que dice abajo.

Citar
#  Haz programa que lea una cadena y visualice en
#   pantalla el mensaje "Contiene dígito" si contiene algún
#   dígito y "No contiene dígito" en caso contrario.

Hice esto y me da error.
Código
  1. cadena = "gfl 65476 vkhvfdiyu548 gh54ycg54 g5"
  2. for i in cadena:
  3.    if chr(i) >= 48 and chr(i) <= 57:
  4.        print "%d - Contiene dígito." % i
  5.    else:
  6.        print "%d - No contiene dígito." % i

Citar
Traceback (most recent call last):
  File "/home/user/NetBeansProjects/sic/src/sic.py", line 31, in <module>
    if chr(i) >= 48 and chr(i) <= 57:
TypeError: an integer is required


Título: Re: [Python] carácteres y espacios
Publicado por: xassiz~ en 27 Octubre 2010, 15:33 pm
ord() no chr()


Título: Re: [Python] carácteres y espacios
Publicado por: Meta en 27 Octubre 2010, 17:06 pm
Verdad.

Código
  1. cadena = "gfl 65476 vkhvfdiyu548 gh54ycg54 g5"
  2. for i in cadena:
  3.    if ord(i) >= 48 and ord(i) <= 57:
  4.        print "%d - Contiene dígito." % i
  5.    else:
  6.        print "%d - No contiene dígito." % i

Citar
  File "/home/user/NetBeansProjects/t/src/t.py", line 34, in <module>
    print "%d - No contiene dígito." % i
TypeError: %d format: a number is required, not str


Título: Re: [Python] carácteres y espacios
Publicado por: criskapunk en 27 Octubre 2010, 17:18 pm
Cambia estas lineas

Código
  1. print "%d - Contiene dígito." % i
  2. print "%d - No contiene dígito." % i

Por

Código
  1. print "%c - Contiene dígito." % i
  2. print "%c - No contiene dígito." % i

Un saludo ;)


Título: Re: [Python] carácteres y espacios
Publicado por: Meta en 27 Octubre 2010, 18:15 pm
Ahora si. Muchas gracias.