【发布时间】:2019-03-06 22:26:08
【问题描述】:
我有这段代码,它是我几周前写的。最初我是为 Python 2.7 编写的,它工作得很好,但我不久前决定放弃它,转向 Python 3.7。谁能解释一下为什么这个while 循环是无限的并且不想满足这些条件?
在 Python 2.7 中,此代码允许我在我的数据文件之间浏览,而我代码中的那些业余技巧允许我处理诸如在 60 分钟后更改小时或在 24 小时后更改日期等问题。仍然不知道如何将其转换为 Python 3。
# Input variables
h = "Arctic"
u = 'Denver'
p = 'Patagonia'
Station = input('Enter a station name (Arctic = h, Denver = u, Patagonia = p): ')
Date = input('Enter date time (yyyymmdd): ')
Date_end = input('Enter end date time (yyyymmdd): ')
Start_time_hours = int(input('Enter start time (hh): '))
Start_time_minutes = int(input('Enter start time (mm): '))
End_time_hours = int(input('Enter end time (hh): '))
End_time_minutes = int(input('Enter end time (mm): '))
Save_Print_SavPrin = input('Press s = Save, p = Plot: ')
while Start_time_hours == Start_time_hours and Start_time_minutes == Start_time_minutes and Date == Date:
Start_time_hours += (Start_time_minutes / 60)
Start_time_minutes %= 60
str(Start_time_minutes)
str(Start_time_hours)
str(End_time_minutes)
str(End_time_hours)
Start_time_hours_format = '{:02}'.format(Start_time_hours)
Start_time_minutes_format = '{:02}'.format(Start_time_minutes)
End_time_hours_format = '{:02}'.format(End_time_hours)
End_time_minutes_format = '{:02}'.format(End_time_minutes)
int(Start_time_minutes)
Start_time_minutes += 5
if Save_Print_SavPrin == "p":
print("Showing figures...")
print ("Succesful!")
if Start_time_hours_format == End_time_hours_format and Start_time_minutes_format == End_time_minutes_format and Date == Date_end:
print (Start_time_hours_format, Start_time_minutes_format, End_time_hours_format, End_time_minutes_format)
break
【问题讨论】:
-
Start_time_hours += (Start_time_minutes / 60)应重写为Start_time_hours += (Start_time_minutes // 60)以跟上整数除法。 -
str(Start_time_minutes)单独没有任何用处。int(Start_time_minutes)也没有 -
while Start_time_hours == Start_time_hours and Start_time_minutes == Start_time_minutes and Date == Date:始终为真。您正在将变量与自己进行比较.... -
问题可能是这里的浮点除法
Start_time_hours += (Start_time_minutes / 60)它将表示更改为字符串,并且从不调用中断。但是您的代码需要大量简化。 -
@Jean-FrançoisFabre 是的,我知道,但老实说,这是我唯一能想到的,也许你有更好的想法来改变这种情况,我会很高兴 :)
标签: python-3.x python-2.7 while-loop