Sumar el numero de “a” que contiene la cadena asignada a una función [python]

Iniciado por bichotg, 19 Febrero 2012, 03:42 AM

0 Miembros y 1 Visitante están viendo este tema.

bichotg

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:

Código (python) [Seleccionar]
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..


Código (python) [Seleccionar]
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

0x5d

Hola, buen día.

Una manera de resolverlo sería:
Código (python) [Seleccionar]

# -*- 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.
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !

Jirp96

Hola!
Código (python) [Seleccionar]
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:
Código (python) [Seleccionar]

>>> 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)
Código (python) [Seleccionar]

>>> 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:
Código (python) [Seleccionar]
for letra in word[cont]:
a esto:
Código (python) [Seleccionar]
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

bichotg

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!!!

0x5d

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 ;)
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !

Novlucker

Se puede "complicar" :P


Código (python) [Seleccionar]
def countA(word):
return len([x for x in p if x=='a'])


Código (python) [Seleccionar]
def countA(word):
return sum([x=='a' for x in p])


Código (python) [Seleccionar]
def countA(word):
return word.count('a')


No es la manera en la que pretende el libro que lo soluciones, pero ... :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein