【问题标题】:Compare list element to input numbers in python将列表元素与python中的输入数字进行比较
【发布时间】: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) 会非常有帮助地告诉你这是一个 strprint type(3) 会告诉你你有一个 int
  • 另外,在任何地方都使用有意义的名称非常重要,但是在这种情况下,将raw_input() 返回的字符串分配给变量num 势必会引起混淆。相反,num = int(raw_input()) 的混淆可能性要小得多。
  • @msw 你是否暗示 raw_input 的默认类型是字符串?
  • 它没有默认值。我链接到的手册说“该函数然后从输入中读取一行,将其转换为字符串(去除尾随换行符),然后返回。” raw_input() 只返回一个字符串(除非它引发 EOFError 异常)。感谢您证明我关于阅读手册的观点。这是真诚的,不是讽刺的,也不是特别针对你。

标签: python list python-2.7 int user-input


【解决方案1】:

您需要将输入转换为int,否则您将比较intstr。将输入提示更改为:

num = int(raw_input('Give me a number: '))

【讨论】:

  • 好的。但是如果是整数和字符串的比较,不就是回溯吗??
  • @furin_kazan 我通过进行我建议的调整运行了您的代码,并且成功了。
  • @furin_kazan - 当您尝试比较字符串和整数时,python 3 会出错...python2 不会。
  • @furin_kazan(由于某种原因我的评论没有出现……再次发帖)。阅读this 以了解类型之间的比较是如何工作的。正如 MSeifert 所说,在 Python 2 中执行此操作时不会出现错误,但我提供的链接将提供对此的深入了解。 Python 3 根本不允许你这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
相关资源
最近更新 更多