【问题标题】:My code is not printing the correct values我的代码没有打印正确的值
【发布时间】:2019-11-29 06:46:36
【问题描述】:

我有一个贯穿 data.csv 文件的代码,它会打印出值。但是这些值不适合测试用例。

导入 csv 文件路径="数据.csv" 使用 open(filePath) 作为 csvfile: reader=csv.DictReader(csvfile)

    print("========================================================")
    print("Display item stock level above certain amount")
    print("========================================================")
    amount = input("Enter amount : ")
    print("========================================================")

    for row in reader:
        if (row['STOCK LEVEL'] >= amount):
            print("PRODUCT ID : {0}\nNAME : {1}\nLEVEL : {2}".format(row['PRODUCT ID'],row['NAME'],row['STOCK LEVEL']))
            print()

我的代码询问用户的 int 输入,并会通读文件并打印项目的详细信息,例如产品 ID、名称、库存水平。

但是当我输入 8 时,它应该打印库存级别高于 8 和 12 的详细信息,但它只打印 8 的详细信息。当我要求 12 时,它会打印每个项目的详细信息,(5, 7 , 8, 12),这是错误的。

【问题讨论】:

  • 你需要把它转换成整数,所以amount = int(input(...))。你应该对row['STOCK LEVEL'] 做同样的事情。现在,您按字典顺序比较项目。

标签: python


【解决方案1】:

一个可能的错误可能是您在第 8 行(在 if 条件内)将整数值与字符串值进行比较

第5行'amount'的输出将是'string'类型,不能与任何数值比较。

我建议你把它转换成'int'

amount = int(input("bla bla"))

我希望row["Stock level"] 的输出也是一个整数。如果不是,也将其放入 int() 函数中。

因此,您的最终代码将是:

int(row["Stock level"]) >= amount

现在试试。希望能帮助到你。如果这不起作用,请告诉我。

【讨论】:

  • row['STOCK LEVEL'] 也不是数值。
  • 我已经更新了我的解决方案。非常感谢您指出@Willem Van Onsem
  • @ParthikB。感谢您的帮助!我从您的解释中意识到,从 excel 中检索到的类型必须与我正在比较的类型相同。我只检查了右侧,但从未检查过左侧。
  • 乐于助人!!
猜你喜欢
  • 2022-01-26
  • 1970-01-01
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多