我遇到了在raspberry pi终端遇到的问题。
>>> alarm = input('Please input the time for the alarm in format HHMM: \n ')
>>> print(alarm)
我键入0700,按回车键,但打印出448而不是0700。 当我在IDLE中尝试它时它推出了0700.为什么它不会在覆盆子pi终端中输出0700?我怎么能让终端把0700拿出去?
答案 0 :(得分:3)
问题是,您使用的是input()
而不是raw_input()
。
raw_input()
在Python 3中消失了。
为了解决您的问题,
更改alarm = input('Please input the time for the alarm in format HHMM: \n ')
到alarm = raw_input('Please input the time for the alarm in format HHMM: \n ')
好的但是有点解释:
raw_input()
完全取用用户输入的内容并将其作为字符串传回。
input()
首先获取raw_input()
,然后对其执行eval()
。
因此,如果您(在Python 2中)eval(str(0700)
,它将返回448
答案 1 :(得分:2)
input()函数将接受您的输入并将其转换为字符串。
0070被视为八进制数。它首先转换为十进制数,然后转换为字符串。
print str(0070)
>>> 56
import time
alarm = str(raw_input('Please input the time for the alarm in format HHMM: \n '))
print alarm
>>> Input: 0080
>>> Output: 0080
您应该验证用户输入的时间。例如,您不应该允许用户输入像4012这样的时间。 您可以使用datetime模块验证时间,如下所示:
import datetime
try:
a = datetime.datetime.strptime(raw_input('specify time in HHMM format: '), "%H%M")
print a.strftime("%H%M")
except:
print "Please enter correct time in HHMM format"
使用datetime对象还有其他优点。您可以按时执行各种操作。例如。增加时间,减去时间,将其转换为各种格式等。 阅读本文以获取更多信息:https://docs.python.org/2/library/datetime.html