【问题标题】:Infinite While Loop in Python 2Python 2 中的无限 While 循环
【发布时间】:2018-08-30 23:18:00
【问题描述】:
file = open(r'd:\holiday_list.txt', 'w')
date = ''
while(date != '0'):
    date = input('\nEnter Date (YYYYMMDD) : ')
    date = date[:4] + '-' + date[4:6] + '-' + date[5:]
    file.write(date)
print('Job Done!')
file.close()

该程序应该将日期(例如:20112016)作为输入并将其写入文件。 问题是程序没有退出while循环。如果我输入 0,它会提示我输入另一个日期。

【问题讨论】:

  • date = date[:4] + '-' + date[4:6] + '-' + date[5:] 行将 '0' 修改为 '0--'。

标签: python while-loop


【解决方案1】:

您的支票放错了地方:您一读入日期就操纵了它,当您回到循环顶部时,结果不再是'0'。试试这个:

date = input('\nEnter Date (YYYYMMDD) : ')
while(date != '0'):
    date = date[:4] + '-' + date[4:6] + '-' + date[5:]
    file.write(date)
    date = input('\nEnter Date (YYYYMMDD) : ')

另一个检查是最基本的调试:输入一个print 命令来显示准确你读到的内容。也许像

print("date is ||", date"||")

竖线将显示任何前导或尾随空格,例如换行符。 (使用 strip 方法摆脱它。)

【讨论】:

  • 这行得通。尽管在您的文本文件中,日期被附加到一行。例如。 0401-19-9910408-​​19-989。我可以添加一个新行。非常感谢。
【解决方案2】:

Prune 的另一种解决方案是使用带有 breakif 语句:

    while(True):
        date=input('\nEnter Date (YYYYMMDD) : ')
        if(date=='0'):
            break
        ...#your work here

这样您就不必在循环之外有额外的输入。

【讨论】:

  • ...但是您需要对逻辑进行额外检查。这是一种风格权衡。
  • 确实,这更像是个人选择。
猜你喜欢
  • 2012-08-28
  • 2017-10-12
  • 2020-11-30
  • 2015-05-22
  • 2014-03-29
  • 2012-12-24
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
相关资源
最近更新 更多