【问题标题】:How to compare input number by the user with the data from the imported file?如何将用户输入的数字与导入文件中的数据进行比较?
【发布时间】:2015-12-22 23:05:46
【问题描述】:

我正在导入一个包含数据的文件并将其转换为矩阵形式,我想要求用户输入一个数字,然后将其与数据中的数字进行比较并打印有多少数字大于输入数字。但我不断收到以下错误:

Traceback (most recent call last):
  File "C:/Users/Main User/Documents/University work/Engineering Programming and design/test.py", line 14, in <module>
    if x > i:
TypeError: unorderable types: float() > list()

代码:

f = open('results.txt', 'r')
row=[]
for line in f:
    row.append([float(x) for x in line.split()])
print('test_data')
print(row)
f.close

counter=0
x=float(input("Enter a number"))
for i in row:
    if x > i:
        counter=counter+1

print(counter)

【问题讨论】:

  • 我会避免提及您在作业方面需要帮助,并且您需要尽快获得帮助。人们不想为你做功课,他们尤其不想为做这件事感到匆忙。他们会假设你只是拖延(即使你没有)。这往往会以错误的方式惹恼人们,并且会使您的问题受到更多的负面关注而不是正面关注。
  • 感谢@esstrada,我会记住这一点,只是我是新来的,所以我不知道。谢谢你的帮助,我真的很感激:)
  • 没问题。 Stack Overflow 可以成为一个很棒的社区,但就像任何社区一样,也有礼仪规则。当你还不知道这些规则时,一开始可能很难。这是一篇关于如何在堆栈溢出之类的论坛上提问的非常好的文章:catb.org/~esr/faqs/smart-questions.html。在我刚开始使用 SO 时,这篇文章对我帮助很大。
  • @esstrada 感谢分享该链接,它有很大帮助,我现在更好地理解了规则......

标签: file input compare python-3.5


【解决方案1】:

您的代码假定它只处理一个平坦的list 数字。你实际上拥有的是listlists 个数字。您的第二个 for 循环需要嵌套。像这样的:

for line in row:
    for number in line:
        if x > number:
            counter = counter + 1

或者你需要使用extend,而不是append,像这样:

for line in f:
    row.extend([float(x) for x in line.split()])

这将给你一个平面的数字列表,就像你的代码所期望的那样。

【讨论】:

  • 我厌倦了使用你给我的第一个代码,但它并没有真正按照我想要的方式工作,它的打印数字像这样
  • @AbrarSajjad 无论如何,第二段代码可能更适合您的需求。我会尝试使用它。这样你只处理一个平面列表(更容易使用),而不是一个嵌套列表。
  • @esstrada 抱歉,我没有意识到我的评论没有完全发布,你给我的第一个代码有点工作,当我输入数字时它打印 1,2,3,4,5 到 92 12..但我想要的是打印比从矩阵列表输入的数字更大的值的代码。另外,我尝试使用您给定的第二个代码将矩阵格式转换为简单列表,但它打印出的结果与您给出的第一个代码相同...
  • 听起来你需要在你的计数器 for 循环中调用 print,如果我理解正确的话。
  • @esstrada 我真的不能这样做,因为此代码将在一个菜单中,当用户选择此选项时,它应该打印出更大的值。我试图将此代码定义为一个函数,因此每当用户选择此选项时,它将调用该函数并打印。但是它仍然给我和错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多