#Basically, for the input number given, return results that are smaller
#than it compared with the list.
n = list(input('Please enter a Number: '))
#map(int, str(n))
newlist = []
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
for n in a:
if n > a:
newlist.append(a)
print(newlist)
不要求解决方案,只是询问n如何作为列表工作,因为当我运行我的代码时,它说:
" if n > a:
TypeError: '>' not supported between instances of 'int' and 'list' "
答案 0 :(得分:3)
这是你需要的。您可以使用list comprehension过滤a
所需的元素。
x = int(input('Please enter a Number: '))
# Input 5 as an example
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
result = [i for i in a if i < x]
print(result)
# [1, 1, 2, 3]
答案 1 :(得分:2)
假设您正在使用python3,input() method将返回一个字符串。
因此,如果您的用户输入值42
,input()
将返回"42"
,(type 'str')
。
然后您将字符串转换为列表,继续使用42示例,您将拥有list("42") == ["4", "2"]
,并将此列表存储在n
中。
无论如何,您不再使用变量n
:
您编写的for
循环并未引用您之前创建的n
变量(请参阅namespaces),但会创建一个新变量,其中包含a
中的每个数字{1}}列表。
这意味着您要将列表的每个数字与整个列表进行比较:
1 > [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
1 > [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
2 > [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
3 > [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
...
在python3中,这将引发TypeError,而在python2中,行为将不是您所期望的。
要使代码正常工作,您可以获取用户输入并将其转换为整数,然后将此整数与列表中的每个数字进行比较,如果数字低于输入整数,则将数字附加到新列表:
myint = int(input('Please enter a Number: '))
# type(myint) == int
newlist = []
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
# for each (n)umber in list (a):
for n in a:
# if the provided number is higher than the actual number in list (a):
if myint > n:
newlist.append(n)
# print the new list once its fully filled
print(newlist)
答案 2 :(得分:1)
因为a
是一个列表,迭代中的n
是列表a
内的整数值。例如,在第0次迭代中,n = 1但是a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
并说n > a
没有意义,是吗?