gpt4 book ai didi

python - 如何在 Python 2.7 中使 raw_input 容差更健壮?

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:03 25 4
gpt4 key购买 nike

我是新手,刚接触编程,所以请放轻松。我知道几乎所有读过这篇文章的人都比我知道的多,我可能做错了。

话虽如此,这就是我正在尝试做的事情:

while True:
arrival = raw_input('Arrival time? Example 8:30 \n')

if arrival != "%s%s:%s%s" % (range(0, 1), range(0, 10), range(0, 7), range(0, 10):

arrival = raw_input('Follow the example: 8:30 \n)
break

elif arrival == "q":
print "escape velocity reached!!!"
return 0

“if”语句没有正确的语法,我什至不知道这是否是一个人应该/将如何着手编写这段代码的第一位。基本上,我希望用户输入的格式为 1:11 或 11:11,否则我的代码就会中断。请忽略 elif,它只是在我测试时打破循环。

主要问题:

  1. 如何修复此代码或实现此代码背后的想法?

相关问题:

  1. 如何让 python 接受“正确”格式化字符串(XX:XX 或 X:XX)的许多不同可能组合?

  2. 强制某人以特定格式在容忍范围内输入数据或增加 raw_input 容忍度的更好方法是什么?

  3. 完成上述所有工作的更好方法是什么,或者是否有更好的方法来解决这个问题?

提前致谢!

附:

  1. 我知道获得好的答案的唯一方法是提出一个好的问题...任何关于更好的问题格式的提示也很感激。

最佳答案

这是我将如何做到这一点:

  • 使用time.strptime 解析时间。 '%H:%M' 的格式字符串适用于你的例子,你可以更具体或尝试支持多种格式如果你需要的话。
  • 使用try/except 处理无法正确解析的输入。 strptime 将提高一个 ValueError 如果格式不匹配,所以你使用 except 来处理它
  • 一旦我们得到可以解析的时间,就将 time_ok 标志设置为 True(并因此退出 while 循环)。

代码:

import time

time_ok = False
while not time_ok:
arrival = raw_input('Arrival time? Example 8:30 \n')
if arrival == 'q':
print("Exiting.")
break
# Try to parse the entered time
try:
time_data = time.strptime(arrival, '%H:%M')
time_ok = True
# If the format doesn't match, print a warning
# and go back through the while loop
except ValueError:
print('Follow the example: 8:30 \n')

hours, minutes = time_data.tm_hour, time_data.tm_min
print(hours, minutes)

关于python - 如何在 Python 2.7 中使 raw_input 容差更健壮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24276348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com