【问题标题】:Trying to Compare an Integer input by user to a text file and outputting Certain lines from that txt file尝试将用户输入的整数与文本文件进行比较并从该 txt 文件中输出某些行
【发布时间】:2018-11-26 21:35:55
【问题描述】:

我正在尝试创建一个函数,该函数接受一个数字并将其与 txt 文件中的相同数字进行比较。如果有数字,则输出整行,否则输出没有数字。目前,只有 9 条线路。

我的txt文件(叫nbaPointsLeaders.txt)如下

    1. James Harden, Houston Rockets, 30.4
    2. Anthony Davis ,New Orleans Pelicans, 28.1
    3. LeBron James, Cleveland Cavaliers, 27.5
    4. Damian Lillard, Portland Trail Blazers, 26.9
    5. Giannis Antetokounmpo, Milwaukee Bucks, 26.8
    6. Kevin Durant, Golden State Warriors, 26.4
    7. Russell Westbrook, Oklahoma City Thunder, 25.4
    8. Kyrie Irving, Boston Celtics, 24.4
    9. LaMarcus Aldridge, San Antonio Spurs, 23.1

如果用户输入 1,则输入整个第一行。

我遇到的另一个问题是:

    TypeError: 'in <string>' requires string as left operand, not int

每当我要求用户输入数字时,就会出现这种情况。

这是迄今为止我想出的代码。我是 python 的初学者,所以它可能也很明显。

    def leaderInPoints(number):
        number = int(input("What number from 1-9 would you like to see?"))
        with open('nbaPointsLeader.txt','r') as file:
              return [i for i in f if number in i])

非常感谢任何帮助!

【问题讨论】:

  • 你能展示你试过的代码吗?
  • 刚刚用我目前的情况更新了这个问题。
  • 什么是变量f
  • f 是文件。我想我忘了在我的退货声明中更新它

标签: python parsing text-files


【解决方案1】:
def leaderInPoints(number):

    number = int(input("What number from 1-9 would you like to see?"))
    file = open('nbaPointsLeader.txt','r')
    # get all lines
    content = file.readlines()
    # we get the nth line
    return content[number]

【讨论】:

  • 所以当我尝试实现它时出现此错误: ValueError: invalid literal for int() with base 10: ' '
  • 我更新了我的代码,你的文件似乎有浮点值,所以你必须将 int 更改为 float
  • 哦,我明白你的意思了。但是,我希望整行显示的是值 5。抱歉,如果不清楚。每行中的第一个数字从 1 到 9。因此,如果用户键入 5,则显示第 5 行
  • 这次成功了!非常感谢所有的帮助!
  • 我有一个问题是 content[int(number)] 如何将用户输入的数字与行中的相同数字进行比较并输出整行?
猜你喜欢
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
相关资源
最近更新 更多