Python用户输入和日期转换

时间:2016-04-25 17:26:26

标签: python

我正在尝试为课程创建这个程序,但我有一个小问题。我似乎总是遇到循环问题!如果您按要求输入日期,该程序将起作用,但如果输入错误,我无法返回并再次询问用户日期。我创建了True / False布尔值,但它似乎不起作用。我们还没有学习如何导入某些日期模块并进行转换,因此我手动转换月份。

说明:

一个。从用户输入数字格式的日期,例如MM / DD / YY。

B中。检查用户输入的月份。如果大于12或小于1,则发出错误消息并再次请求输入。

℃。对日期和年份执行类似的验证测试。年必须 是2013年。(任何其他年份无效)。此外,年份必须只有两位数。

d。验证完所有输入后,以长日期格式输出字符串。因此,在2015年6月1日输入的字符串将在2015年6月1日输出。

def main():
    try_again = True
    while try_again == True:
        date_string = input("Please enter a date in the format 'mm/dd/yy': ")
        date_list = date_string.split('/')

        month = date_list[0]
        day = date_list[1]
        year = date_list[2]

        if month > "12" or month < "01":
            print('Error, please re-enter the date!')

        if year != '13':
            print('Error! The year must be 2013')

        if len(year) > 2:
            print('Error! The year can only be 2 digits long!')

        else:
            print_date(month, day, year)
            try_again = False



def print_date(month, day, year):

# Convert to 2013 because 2013 is the only valid year
# for this program.

if year == '13':
    year = '2013' 

# Convert the number values to the actual month.

if month == '01':
    month = 'January'
if month == '02':
    month = 'February'  
if month == '03':       
    month = 'March'
if month == '04':
    month = 'April'
if month =='05':
    month = 'May'
if month == '06':
    month = 'June'
if month == '07':
    month = 'July'
if month == '08':
    month = 'August'
if month == '09':
    month = 'September'
if month =='10':
    month = 'October'
if month == '11':
    month = 'November'
if month == '12':
    month = 'December'


# Print the date in the correct format 
print(month + " " + day + ',' + " " + year)


main()

1 个答案:

答案 0 :(得分:1)

else仅适用于最后一个if语句,要么为每个条件添加continue,要么将中间if更改为elif

    if month > "12" or month < "01":
        print('Error, please re-enter the date!')
        continue #back to beginning of loop

    if year != '13':
        print('Error! The year must be 2013')
        continue #back to beginning of loop

    if len(year) > 2:
        print('Error! The year can only be 2 digits long!')
        continue #back to beginning of loop

    #else: #doesn't really change anything any more
    #only happens if none of the continue s happend
    print_date(month, day, year)
    try_again = False

elif s:

    if month > "12" or month < "01":
        print('Error, please re-enter the date!')

    elif year != '13':
        print('Error! The year must be 2013')

    elif len(year) > 2:
        print('Error! The year can only be 2 digits long!')

    else:
        print_date(month, day, year)
        try_again = False

这样只会发生其中一个条件。