Holaa!!
Ya vuelvo a estar aqui con mis dudas xddd, esta vez creo que estoy muy cerca de hacerlo bien, pero en algo fallo, mirar el proble a resolver es este:
CitarWrite the function countA(word) that takes in a word as argument and returns the number of 'a' in that word.
Examples
>>> countA("apple")
1
>>> countA("Apple")
0
>>> countA("Banana")
3
yo lo hago asi y no me funciona:
def countA(word):
cont=0
total=0
for letra in word[cont]:
if letra=='a':
total=total+1
cont=cont+1
elif letra!='a':
cont=cont+1
return total
tambien se me ocurrio hacerlo así y nada..
def countA(word):
cont=0
total=0
partes=word[cont]
for letra in partes:
if letra=='a':
total=total+1
cont=cont+1
elif letra!='a':
cont=cont+1
return total
haber si me podéis explicar cual es el fallo y como resolverlo
por cierto cuanto tiempo aprox os llevó aprender python? yo llevo un mes y medio mas o menos es muy poco pero aveces creo que avanzo demasiado lento :(
Saludos y graciassss
Hola, buen día.
Una manera de resolverlo sería:
# -*- coding: utf-8 -*-
def contar(string):
i = 0
for s in string:
if s=='a':
i+=1
return i
print contar("Jaavier")
Salida:
2
con for s in string: recorremos el string "Jaavier" letra por letra
Si la letra es igual a 'a' entonces a i le sumo 1
Una vez fuera del bucle, retornamos cuantas 'a' habían.
Con respecto a lo de cuanto tiempo tarda en aprender y esas cosas...
No te apresures con saberlo todo rapidamente, hay a quienes se les da más fácil
pues tienen bases de otros lenguajes...
Saludos.
Hola!
def countA(word):
cont=0
total=0
for letra in word[cont]:
if letra=='a':
total=total+1
cont=cont+1
elif letra!='a':
cont=cont+1
return total
A primera vista tiene unas cuantas cosas innecesarias:
->la variable cont, no veo que utilidad tiene :huh:
->el "elif", tampoco es necesario, con el if basta(a menos que quieras contar las letras que no son a tambien
->y el "error", por el que no te funcionan los codigos como deberian, es el for. Así como lo pones, solo recorre la primera letra de "word", mira:
Esto es lo que pasa con el for:
>>> word = "alala"
>>> cont = 0
>>>
>>> for x in word[cont]:
print "x: ", x, "\ncont: ", cont
cont += 1
x: l
cont: 1
Y esto es lo que devuelve la primera funcion que pusiste(la segunda funciona igual si no me equivoco)
>>> countA("ala") #como la primera letra es "a", devuelve 1, pero ignora al resto de las letras
1
>>> countA("la") #como la primera letra no es "a", devuelve 0
0
>>> countA("banana") #lo mismo de arriba
0
>>> countA("anana") #como la primera letra es "a", devuelve 1, pero ignora al resto de las letras
1
>>>
En definitiva, debes cambiar esto:
for letra in word[cont]:
a esto: for letra in word:
y ya te funcionaría sin problemas(aunque el elif y cont seguirian estando de más :xD)
Saludos!
EDITO: mejor ve lo que dijo 0x5d, que lo explico de forma mas clara y concisa :xD
Los dos habéis repuesto de una manera clarísima y facilísima de entender, creo que me lie un poco con algo que vi para recorrer una lista o que se yo. jeje, es mi primer lenguaje y me cuesta un poco, pero soy constante :), he andado por varios foros preguntando siempre mis dudas de python, y de verdad que aqui es donde mejor lo explicais,
Muchas gracias!!!
Cita de: bichotg en 19 Febrero 2012, 09:23 AM
Los dos habéis repuesto de una manera clarísima y facilísima de entender, creo que me lie un poco con algo que vi para recorrer una lista o que se yo. jeje, es mi primer lenguaje y me cuesta un poco, pero soy constante :), he andado por varios foros preguntando siempre mis dudas de python, y de verdad que aqui es donde mejor lo explicais,
Muchas gracias!!!
No problem ! cualquier duda solo planteala ;)
Se puede "complicar" :P
def countA(word):
return len([x for x in p if x=='a'])
def countA(word):
return sum([x=='a' for x in p])
def countA(word):
return word.count('a')
No es la manera en la que pretende el libro que lo soluciones, pero ... :P
Saludos