Python noob--可能是一个简单的拼写错误?

时间:2016-01-24 22:13:06

标签: python

我真的无法理解为什么这段代码不起作用...... 这可能只是一个错字。但即便是我经验丰富的朋友也难过。 提示只是“编写一个程序,告诉你给定列表中有多少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

4 个答案:

答案 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_stringstr的计数方法:

list

答案 2 :(得分:0)

无论你输入什么内容,

raw_input都会生成一个字符串,而不是整数列表。所以i最多不会等于4(整数)" 4" (字符串)。

答案 3 :(得分:0)

请查看@Mike Graham的答案。

如果您正在寻找更多Pythonic解决方案:

from collections import Counter
Counter(raw_input()).get("4")