我真的无法理解为什么这段代码不起作用...... 这可能只是一个错字。但即便是我经验丰富的朋友也难过。 提示只是“编写一个程序,告诉你给定列表中有多少4个。”它的全部工作除了计数表示零,无论我提交多少4。
def num_four(number_list):
count = 0
print number_list
for i in number_list:
print i
if i == 4:
count = count + 1
return count
number_list = raw_input("Enter list of integers here: ")
print num_four(number_list)
输出如下:
Enter list of integers here: 123444
123444
1
2
3
4
4
4
0
答案 0 :(得分:6)
raw_input
返回类似"8675409"
的字符串。当你迭代这个字符串(它不是一个列表)时,你会得到字符串"8"
,然后是"6"
,然后是"7"
- 它最终将是{{1} },但永远不会是int "4"
。
答案 1 :(得分:2)
问题是您没有将数字列表传递给您的函数,因为4
会返回一个字符串。
raw_input
这假定您输入的数字由空格分隔。
如果您只输入类似于' 1234'的字符串,请迭代字符串并检查函数中的number_list = raw_input("Enter list of integers here: ")
number_list = map(int, number_list.split())
print num_four(number_list)
而不是整数'4'
。如果是这种情况,请考虑将4
重命名为更适合number_list
的内容。
如果您想简化功能,请使用continuous_number_string
或str
的计数方法:
list
答案 2 :(得分:0)
raw_input
都会生成一个字符串,而不是整数列表。所以i
最多不会等于4(整数)" 4" (字符串)。
答案 3 :(得分:0)
请查看@Mike Graham的答案。
如果您正在寻找更多Pythonic解决方案:
from collections import Counter
Counter(raw_input()).get("4")