花时间作为HHMM格式的用户输入

时间:2016-11-25 02:12:17

标签: python raspberry-pi

我遇到了在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拿出去?

2 个答案:

答案 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