Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: s1d4rt4 en 18 Julio 2006, 21:35 pm



Título: ayida con python =(
Publicado por: s1d4rt4 en 18 Julio 2006, 21:35 pm
hasta ahora iva todo bien, entendiéndo todo y bla bla bla... la cosa es que llegue a las cadenas, y entre los ejercicios k propone el tutorial que estoy siguiéndo, está el crear un programa k identifique cuantos números hay dentro de una frase...

Código:
x = raw_input('ingrese una frase: ') 
n = 0                                           
for i in x:
    if i>=0 or i<=0:
        n+=1

if n>=1:
    print 'la cadena contiene', n, 'números'

la verdad no tengo idea donde está el error, no imaginan cuanto tiempo le he dedicado ¬¬ lo he escrito de mil formas y las mil formas no funcionan... esta en especial me dice k todo lo k escribo, inclusive las letras, son numeros ¬¬


Título: Re: ayida con python =(
Publicado por: sirdarckcat en 18 Julio 2006, 21:48 pm
jejeje
primero ve si lo que entra son numeros..
probablemente I regresa el valor ASCII del caracter, por lo que podrias hacer esto:

if i-48<=9 or i-48>=0

48 = ASCII('0')

Saludos!!


Título: Re: ayida con python =(
Publicado por: Division-x en 19 Julio 2006, 01:45 am
prueba a usar un depurador y que te diga exactamente donde esta el error, pero ya te lo ha explicado Sdc, yo creo que es eso.

S4lu2


Título: Re: ayida con python =(
Publicado por: T1g3r en 19 Julio 2006, 03:16 am
no le veo ningun error... funciona perfectamente en python 2.4 de windows....


Título: Re: ayida con python =(
Publicado por: Division-x en 19 Julio 2006, 13:28 pm
aaahhhhhh!!!!
perdon no lo entendi, pense que era un error de compilacion ;D ;D ;D ;D ;D
en ese caso, para el sentido comun no existe ningun depurador ;) ;) ;) ;) ;) ;) ;)

PD: HEMOS CONSEGUIDO EL FORO!!!!!!!!!!!!!!!!!!!!!!!!


Título: Re: ayida con python =(
Publicado por: s1d4rt4 en 19 Julio 2006, 16:18 pm
no le veo ningun error... funciona perfectamente en python 2.4 de windows....
:o te funciona? probaste escribiendo algo así como 'tengo 21 años'
pork a mi me cuenta todo lo que ingreso como si fuesen números :-( hahahaha, por favor man, contestame ;D

pd: ejaleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee foro de scripting ;D deberian mover este tema  ;D ;D ;D ;D


Título: Re: ayida con python =(
Publicado por: T1g3r en 20 Julio 2006, 01:17 am
sin duda que funciona...  desime el error que te da :P


Título: Re: ayida con python =(
Publicado por: s1d4rt4 en 20 Julio 2006, 01:50 am
no es un 'error' jajaja es solo k el programa no hace lo que le pido...

por ejemplo, si ingreso: 'tengo 60 años', el programa debería devolver: 'la cadena tiene 2 números'

pero en vez de eso obtengo 'la cadena tiene 11 números'

 :-\


Título: Re: ayida con python =(
Publicado por: Division-x en 20 Julio 2006, 13:09 pm
jejeje
primero ve si lo que entra son numeros..
probablemente I regresa el valor ASCII del caracter, por lo que podrias hacer esto:

if i-48<=9 or i-48>=0

48 = ASCII('0')

Saludos!!

Has probado con esto????????, yo lo hago asi y funciona ;) ;) ;)


Título: Re: ayida con python =(
Publicado por: s1d4rt4 en 20 Julio 2006, 17:59 pm
mmmmmmmmm yo kreo k no lo estoy haciendo bien, pero me regresa

48 = ASCII('0')

File "<Module1>", line 10
SyntaxError: can't assign to literal


Título: Re: ayida con python =(
Publicado por: Inoxia en 20 Julio 2006, 19:17 pm
Creo -o almenos eso entiendo yo- que el "48 = ASCII('0')" era referencia para ti, no para tu codigo, solo utiliza el 'if' que te escribio y lo pruebas.

Datura Inoxia


Título: Re: ayida con python =(
Publicado por: Division-x en 20 Julio 2006, 19:33 pm
Creo -o almenos eso entiendo yo- que el "48 = ASCII('0')" era referencia para ti, no para tu codigo, solo utiliza el 'if' que te escribio y lo pruebas.

Datura Inoxia

si, yo crei que lo entendiste asi s1d4rt4


Título: Re: ayida con python =(
Publicado por: s1d4rt4 en 20 Julio 2006, 19:33 pm
Traceback (most recent call last):
  File "<string>", line 74, in run_nodebug
  File "<Module1>", line 4, in ?
TypeError: unsupported operand type(s) for -: 'str' and 'int'

 :-\


Título: Re: ayida con python =(
Publicado por: Division-x en 20 Julio 2006, 20:06 pm
no se no se.......
un consejo, "saltate" ese capitulo, y sigue adelante, ya entenderas el error mas adelante, creo.....
 ;) ;)


Título: Re: ayida con python =(
Publicado por: s1d4rt4 en 20 Julio 2006, 20:20 pm
naaaaaaaaaaa, eso significa una derrota... no me gustan las derrotas >:(


Título: Re: ayida con python =(
Publicado por: Inoxia en 20 Julio 2006, 22:06 pm
Ok, me puse a verlo y al parecer lo que publico Sdc no me funciono pero checa este, que es basicamente tu codigo.

Código:
entrada = raw_input("Ingresa una frase: ")
contador = 0

for letra in entrada:
    if letra >= '0' and letra <= '9':
        contador += 1
if contador > 0:
    print "La cadena contiene ", contador, " digitos."

Datura Inoxia.


Título: Re: ayida con python =(
Publicado por: s1d4rt4 en 20 Julio 2006, 22:28 pm
mmmmm osea k debía tratar los números como simples cadenas?

gracias a todos por ayudar a este novato ;D thx!


Título: Re: ayida con python =(
Publicado por: sirdarckcat en 21 Julio 2006, 05:27 am
Inoxia: porque no te funciono el mio?
s1rd4rt4: no, no es eso, pero masomenos jeje

Saludos!!


Título: Re: ayida con python =(
Publicado por: s1d4rt4 en 21 Julio 2006, 18:03 pm
jajajajaja paso a paso man ;D


Título: Re: ayida con python =(
Publicado por: Inoxia en 21 Julio 2006, 21:03 pm
Hola Sdc, pues como habia comentado s1d4rt4, el problema esta en que i es una cadena entonces no puedo operarla con enteros. Lo interesante es que Division-x lo probo y si le funciono (Lo menciono a el porque tu no dices que lo probaste, fue una idea que tuviste).

Datura Inoxia


Título: Re: ayida con python =(
Publicado por: Division-x en 21 Julio 2006, 23:15 pm
Hola Sdc, pues como habia comentado s1d4rt4, el problema esta en que i es una cadena entonces no puedo operarla con enteros. Lo interesante es que Division-x lo probo y si le funciono (Lo menciono a el porque tu no dices que lo probaste, fue una idea que tuviste).

Datura Inoxia

asi es, a mi me funciono.


Título: Re: ayida con python =(
Publicado por: sirdarckcat en 21 Julio 2006, 23:28 pm
esque no tiene sentido que no haya funcionado :-/ hacer

i-'0'
debe ser igual que hacer
i-48

que raro ¬¬
en fin, saludos!!


Título: Re: ayida con python =(
Publicado por: Division-x en 21 Julio 2006, 23:37 pm
esque no tiene sentido que no haya funcionado :-/ hacer

i-'0'
debe ser igual que hacer
i-48

que raro ¬¬
en fin, saludos!!

ojo, que yo no he dicho que tu metodo no funcione, yo solo probe el de inoxia.
S4lu2!!!


Título: Re: ayida con python =(
Publicado por: Inoxia en 22 Julio 2006, 06:43 am
Creo que ya me confundi, Division-x me referia a esto: http://foro.elhacker.net/index.php/topic,132190.msg620545.html#msg620545

A que tu probaste el de Sdc y dijiste que funciono.

Datura Inoxia


Título: Re: ayida con python =(
Publicado por: Division-x en 22 Julio 2006, 11:49 am
jejeje
primero ve si lo que entra son numeros..
probablemente I regresa el valor ASCII del caracter, por lo que podrias hacer esto:

if i-48<=9 or i-48>=0

48 = ASCII('0')

Saludos!!

Has probado con esto????????, yo lo hago asi y funciona ;) ;) ;)

quise decir que ese ejercicio del manual, (o uno parecido) yo lo hice con ese metodo, pero no asi EXACTAMENTE, no se si me explico, yo lo hice mucho mas largo y de la manera bruta, comparando todos los caracteres con numeros y que me devolviera true cuando encontrara uno, por eso no he dicho nada, por que no creo que esa manera sea procedente.

S4lu2!!


Título: Re: ayida con python =(
Publicado por: RompeRatones en 8 Septiembre 2006, 10:02 am
>>> x=raw_input("Escriba algo: ")
Escriba algo: 3489jj0f se0rjwjw0j 0398w3 s2f
>>> x
'3489jj0f se0rjwjw0j 0398w3 s2f'
>>> j=list(x)
>>> j
['3', '4', '8', '9', 'j', 'j', '0', 'f', ' ', 's', 'e', '0', 'r', 'j', 'w', 'j', 'w', '0', 'j', ' ', '0', '3', '9', '8', 'w', '3', ' ', 's', '2', 'f']
>>> for i in range(len(j)):
...      if j.isdigit():
...              print j
...
3
4
8
9
0
0
0
0
3
9
8
3
2
>>> for i in range(len(j)):
...      if j.isdigit():
...              print "j[%s] = %s" % (i,j)
...
j[0] = 3
j[1] = 4
j[2] = 8
j[3] = 9
j[6] = 0
j[11] = 0
j[17] = 0
j[20] = 0
j[21] = 3
j[22] = 9
j[23] = 8
j[25] = 3
j[28] = 2
>>> for i in range(len(j)):
...      if j.isdigit():
...              digitos+=1
...
>>> print digitos
13