elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Sumar el numero de “a” que contiene la cadena asignada a una función [python]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sumar el numero de “a” que contiene la cadena asignada a una función [python]  (Leído 3,704 veces)
bichotg

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Sumar el numero de “a” que contiene la cadena asignada a una función [python]
« en: 19 Febrero 2012, 03:42 am »

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:

Citar
Write 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
  1. def countA(word):
  2. cont=0
  3. total=0
  4. for letra in word[cont]:
  5. if letra=='a':
  6. total=total+1
  7. cont=cont+1
  8. elif letra!='a':
  9. cont=cont+1
  10. return total

tambien se me ocurrio hacerlo así y nada..


Código
  1. def countA(word):
  2. cont=0
  3. total=0
  4. partes=word[cont]
  5. for letra in partes:
  6. if letra=='a':
  7. total=total+1
  8. cont=cont+1
  9. elif letra!='a':
  10. cont=cont+1
  11. 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


En línea

0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: Sumar el numero de “a” que contiene la cadena asignada a una función [python]
« Respuesta #1 en: 19 Febrero 2012, 05:13 am »

Hola, buen día.

 Una manera de resolverlo sería:
Código
  1. # -*- coding: utf-8 -*-
  2. def contar(string):
  3.  i = 0
  4.  for s in string:
  5.    if s=='a':
  6.      i+=1
  7.  return i
  8.  
  9. print contar("Jaavier")
Salida:
Código:
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.


En línea

Jirp96

Desconectado Desconectado

Mensajes: 46


Ver Perfil
Re: Sumar el numero de “a” que contiene la cadena asignada a una función [python]
« Respuesta #2 en: 19 Febrero 2012, 05:35 am »

Hola!
Código
  1. def countA(word):
  2. cont=0
  3. total=0
  4. for letra in word[cont]:
  5. if letra=='a':
  6. total=total+1
  7. cont=cont+1
  8. elif letra!='a':
  9. cont=cont+1
  10. 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
  1. >>> word = "alala"
  2. >>> cont = 0
  3. >>>
  4. >>> for x in word[cont]:
  5. print "x: ", x, "\ncont: ", cont
  6. cont += 1
  7.  
  8. x:  l
  9. cont:  1
  10.  

Y esto es lo que devuelve la primera funcion que pusiste(la segunda funciona igual si no me equivoco)
Código
  1. >>> countA("ala") #como la primera letra es "a", devuelve 1, pero ignora al resto de las letras
  2. 1
  3. >>> countA("la") #como la primera letra no es "a", devuelve 0
  4. 0
  5. >>> countA("banana") #lo mismo de arriba
  6. 0
  7. >>> countA("anana") #como la primera letra es "a", devuelve 1, pero ignora al resto de las letras
  8. 1
  9. >>>

En definitiva, debes cambiar esto:
Código
  1. for letra in word[cont]:
a esto:
Código
  1. 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
« Última modificación: 19 Febrero 2012, 05:39 am por Jirp96 » En línea

bichotg

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: Sumar el numero de “a” que contiene la cadena asignada a una función [python]
« Respuesta #3 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!!!
En línea

0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: Sumar el numero de “a” que contiene la cadena asignada a una función [python]
« Respuesta #4 en: 19 Febrero 2012, 10:22 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 ;)
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Sumar el numero de “a” que contiene la cadena asignada a una función [python]
« Respuesta #5 en: 22 Febrero 2012, 04:33 am »

Se puede "complicar" :P


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

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

Código
  1. def countA(word):
  2. return word.count('a')

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

Saludos
« Última modificación: 22 Febrero 2012, 07:37 am por Novlucker » En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines