【发布时间】:2016-03-16 02:47:04
【问题描述】:
我正在做一个 python 练习,这是一个问题:
向用户询问一个数字并返回一个列表,该列表仅包含原始列表 a 中小于用户给出的数字的元素。
这是原始列表:
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
我有以下代码:
b = list()
num = raw_input('Give me a number: ')
for i in a:
if i < num:
b.append(i)
print b
但无论我输入什么数字,它总是将原始列表中的所有数字返回到新列表中。
有什么建议或意见吗?
【问题讨论】:
-
因为很少有人愿意教这个,我会在这个小盒子里试试。通常在开始 Python 时,你手头有什么类型的对象并不明显。您可以查找raw_input,但您不会,所以这里有两个朋友:
repr()和type()。您在num中有一些东西是什么?print type(num)会非常有帮助地告诉你这是一个str而print type(3)会告诉你你有一个int。 -
另外,在任何地方都使用有意义的名称非常重要,但是在这种情况下,将
raw_input()返回的字符串分配给变量num势必会引起混淆。相反,num = int(raw_input())的混淆可能性要小得多。 -
@msw 你是否暗示 raw_input 的默认类型是字符串?
-
它没有默认值。我链接到的手册说“该函数然后从输入中读取一行,将其转换为字符串(去除尾随换行符),然后返回。”
raw_input()只返回一个字符串(除非它引发EOFError异常)。感谢您证明我关于阅读手册的观点。这是真诚的,不是讽刺的,也不是特别针对你。
标签: python list python-2.7 int user-input