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...
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 ¬¬
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!!
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
no le veo ningun error... funciona perfectamente en python 2.4 de windows....
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!!!!!!!!!!!!!!!!!!!!!!!!
Cita de: Tiger [AlBiCeLeStE] en 19 Julio 2006, 03:16 AM
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
sin duda que funciona... desime el error que te da :P
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'
:-\
Cita de: Sdc 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!!
Has probado con esto????????, yo lo hago asi y funciona ;) ;) ;)
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
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
Cita de: 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
si, yo crei que lo entendiste asi s1d4rt4
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'
:-\
no se no se.......
un consejo, "saltate" ese capitulo, y sigue adelante, ya entenderas el error mas adelante, creo.....
;) ;)
naaaaaaaaaaa, eso significa una derrota... no me gustan las derrotas >:(
Ok, me puse a verlo y al parecer lo que publico Sdc no me funciono pero checa este, que es basicamente tu codigo.
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.
mmmmm osea k debía tratar los números como simples cadenas?
gracias a todos por ayudar a este novato ;D thx!
Inoxia: porque no te funciono el mio?
s1rd4rt4: no, no es eso, pero masomenos jeje
Saludos!!
jajajajaja paso a paso man ;D
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
Cita de: 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
asi es, a mi me funciono.
esque no tiene sentido que no haya funcionado :-/ hacer
i-'0'
debe ser igual que hacer
i-48
que raro ¬¬
en fin, saludos!!
Cita de: Sdc 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!!
ojo, que yo no he dicho que tu metodo no funcione, yo solo probe el de inoxia.
S4lu2!!!
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
Cita de: Division-x en 20 Julio 2006, 13:09 PM
Cita de: Sdc 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!!
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!!
>>> 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