字母数字字符串
Python newb在这里。我试图计算给定字符串中字母“a”的数量。代码如下。它保持字符串“香蕉”返回1而不是3。任何输入赞赏。字母数字字符串
def count_letters(word, char):
count = 0
while count <= len(word):
for char in word:
if char == word[count]:
count += 1
return count
print count_letters('banana','a')
其他的答案显示什么是你的代码错误。但也有一个内置的方式做到这一点,如果你不只是做这个练习:
>>> 'banana'.count('a')
3
Danben给这个修改后的版本:
def count_letters(word, char):
count = 0
for c in word:
if char == c:
count += 1
return count
这里有一些其他方式来做,希望他们会教你更多关于Python的知识!
相似,但较短的for
循环。利用这样的事实布尔可如果假的变成1,如果真和0:
def count_letters(word, char):
count = 0
for c in word:
count += (char == c)
return count
短的循环大致可以变成列表/发电机内涵。这将创建对应于每个字母整数列表,用0,如果如果它不信不匹配char
和1,并将其加:
def count_letters(word, char):
return sum(char == c for c in word)
下一个过滤掉所有的字符,唐”牛逼比赛char
和计数有多少是留给:
def count_letters(word, char):
return len([c for c in word if c == char])
你return
是在你的for循环!要小心缩进,你想要return count
行在循环之外。由于for循环遍历word
中的所有字符,所以外部while循环完全不需要。
清洁的后续版本:
def count_letters(word, to_find):
count = 0
for char in word:
if char == to_find:
count += 1
return count
非常感谢这一款。 – shaytac 2010-05-28 21:16:15
的一个问题是,你正在使用count
既指的是,你正在检查的字的位置,你已经看到的char
数量,以及你正在使用char
来引用您正在检查的输入字符以及字符串中的当前字符。改为使用单独的变量。
另外,将return
语句移到循环外部;否则在检查第一个字符后你会一直返回。
最后,您只需要一个循环来遍历字符串。摆脱外部while
循环,你将不需要跟踪字符串中的位置。
考虑这些建议,您的代码应该是这样的:
def count_letters(word, char):
count = 0
for c in word:
if char == c:
count += 1
return count
我看到一些东西是错误的。
- 您重复使用标识符
char
,这样会导致问题。 - 您的意思是
if char == word[count]
而不是word[some index]
- 您在for循环的第一次迭代之后返回!
你甚至不需要while
。如果重命名字符参数去search
,
for char in word:
if char == search:
count += 1
return count
或者您可以使用:
mystring = 'banana'
number = mystring.count('a')
你有许多问题:
- 其他人已经指出您的缩进存在问题。
- 不需要嵌套循环。只需一个循环就足够了。
- 您正在使用char来表示两个不同的事物,但for循环中的char变量将覆盖参数中的数据。
此代码修复所有这些错误:
def count_letters(word, char):
count = 0
for c in word:
if char == c:
count += 1
return count
一个更简洁的方式来写这个是用生成器表达式:
def count_letters(word, char):
return sum(char == c for c in word)
或者只是使用内置的方法count这是为你做的:
print 'abcbac'.count('c')
def count_letter(word, char):
count = 0
for char in word:
if char == word:
count += 1
return count #Your return is inside your for loop
r = count_word("banana", "a")
print r
x=str(input("insert string"))
c=0
for i in x:
if 'a' in i:
c=c+1
print(c)
请解释您的代码如何回答问题。 – 2013-08-29 20:31:25
count_letters=""
number=count_letters.count("")
print number
一个简单的方法如下:
def count_letters(word, char):
return word.count(char)
或者,有另一种方式直接计数的每个元素:
from collections import Counter
Counter('banana')
当然,你可以指定一个元素,例如
Counter('banana')['a']
字=输入( “输入一个单词: ”)
打印(“ \ nHere在你的单词中每个字母:”) 以字字母: 打印(信)
输入(“\ n \ n按输入键退出”)
"banana".count("ana")
返回1而不是2!
我认为该方法遍历字符串(或列表)的步长等于子字符串的长度,所以它没有看到这种东西。
所以,如果你想要一个“完全数”你有步骤的正确环1
纠正我,如果我错了,以实现自己的反...
我觉得你的代码是缩进正确。你会得到一个缩进错误。 – Lucas 2010-05-28 21:12:16