【问题标题】:Why does the loop not get executed even though the conditions are satisfied?为什么即使满足条件,循环也不会执行?
【发布时间】:2020-12-24 23:57:55
【问题描述】:

我正在开发一个更新/更改 CSV 文件夹中元素的程序。它首先按列表读取 CSV 文件列表,并检查序列号是否与用户提供的序列号匹配。如果是,那么它会要求用户更改下一个元素。

但在我的程序中,即使条件满足,第一个 IF 循环也没有运行。我尝试输入的序列号存在于列表中,但仍然无法执行。请研究这个问题。

这是我的代码。

def update():
    f=open("daily.csv",'r')
    r=csv.reader(f)
    sno=int(input("WHICH RECORD DO YOU WANT TO UPDATE? (ENTER THE SERIAL NO.)"))
    next(r)
    for i in r:
        if i[0]==sno:
            ch=int(input("1.CHANGE CATEGORY (PRESS 1)2.CHANGE AMOUNT (PRESS 2)3.CHANGE DATE (PRESS 3)"))
            if ch==1:
                nc=input("PLEASE ENTER NEW CATEGORY")
                i[1]=nc
                print(i)
            elif ch==2:
                na=int(input("PLEASE ENTER THE NEW AMOUNT"))
                i[2]=na
                print(i)
            elif ch==3:
                nd=int(input("PLEASE ENTER THE NEW DATE"))
                i[3]=nd
                print(i)
        else:
            print("INVALID SERIAL NO")
    f.close()

【问题讨论】:

  • 请使用示例用户输入和您希望程序找到的 cvs 文件中的相应行来更新您的问题。
  • 我希望输入不需要 int()。你的意思是 sno = input(.....)?
  • 顺便说一句,我不希望我的程序对我的用户大喊大叫。
  • 检查i[0]的数据类型。如果口译员说他们不相等,那他们就不是。这可能是因为您的测试将int 与字符串进行比较。

标签: python list loops csv file


【解决方案1】:

我认为问题在于文件中的值被读取为字符串。尝试先将 s[0] 转换为 int 然后比较。此外,如果您使用的是 pycharm 之类的 IDE,请使用内置调试器查看值以及它们失败的原因。 问题也可能与您尝试访问的“s”索引有关。如果您没有调试器,请尝试打印值和值的类型,因为这可能有助于调试过程。

【讨论】:

  • 哦,好吧,我试试
猜你喜欢
  • 2021-08-07
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
相关资源
最近更新 更多