Python 33.15 实验室:解析日期 Zybooks 讲师备注:第 10 章介绍了本实验室所需的技能。字符串

问题描述 投票:0回答:1

编写一个程序从输入中读取日期,每行一个日期。每个日期的格式必须如下:1990 年 3 月 1 日。任何不遵循该格式的日期都是不正确的,应被忽略。输入仅在一行上以 -1 结尾。将每个正确的日期输出为:3/1/1990。

提示:解析字符串并提取日期时,使用 string[start:end] 获取子字符串。使用 split() 方法将输入分解为标记。

例如:如果输入是:

1990 年 3 月 1 日 1995 年 4 月 2 日 2020年7月15日 2003 年 12 月 13 日 -1 那么输出是:

1990年3月1日 2003 年 12 月 13 日

def get_month_as_int(monthString):

if monthString == 'January':
    month_int = 1
elif monthString == 'February':
    month_int = 2
elif monthString == 'March':
    month_int = 3
elif monthString == 'April':
    month_int = 4
elif monthString == 'May':
    month_int = 5
elif monthString == 'June':
    month_int = 6
elif monthString == 'July':
    month_int = 7
elif monthString == 'August':
    month_int = 8
elif monthString == 'September':
    month_int = 9
elif monthString == 'October':
    month_int = 10
elif monthString == 'November':
    month_int = 11
elif monthString == 'December':
    month_int = 12
else:
    month_int = 0

return month_int

用户字符串=输入()

TODO:从输入中读取日期,解析日期以查找日期

以正确的格式,并以 m/d/yyyy 格式输出

虽然正确: 用户字符串 = 输入()

if user_string == -1:
    break
else:
    is_valid = False
    char = user_string.find(",")

    if char != -1:
        is_valid = True

    if is_valid == True:
        words = user_string.split()
        month = words[0]
        days = words[1]
        year = words[2]
        
        print(f'{month_str}/{day}/{year}')

    elif is_valid == False:
        continue

我的程序存在一些错误: 我不明白为什么它一直在我的输入行上抛出错误,除非它是在 While True 之后: 但我需要循环多个输入。

也无法弄清楚如何去掉当天字符串中的逗号

这是我的输入和结果:

输入程序输入(可选) 1990 年 3 月 1 日 1995 年 4 月 2 日 2020年7月15日 2003 年 12 月 13 日 -1

此处显示程序错误 回溯(最近一次调用最后一次): 文件“/home/runner/local/submission/main.py”,第 35 行,位于 用户字符串=输入() EOFError: 读取一行时出现 EOF

此处显示程序输出 1990年3月1日 2003 年 12 月 13 日

string parsing format
1个回答
0
投票

我更新了Python代码。希望对你有用。

def get_month_as_int(monthString):
    if monthString == 'January':
        month_int = 1
    elif monthString == 'February':
        month_int = 2
    elif monthString == 'March':
        month_int = 3
    elif monthString == 'April':
        month_int = 4
    elif monthString == 'May':
        month_int = 5
    elif monthString == 'June':
        month_int = 6
    elif monthString == 'July':
        month_int = 7
    elif monthString == 'August':
        month_int = 8
    elif monthString == 'September':
        month_int = 9
    elif monthString == 'October':
        month_int = 10
    elif monthString == 'November':
        month_int = 11
    elif monthString == 'December':
        month_int = 12
    else:
        month_int = 0

    return month_int

if __name__ == "__main__":
    # March 1, 1990 April 2 1995 7/15/20 December 13, 2003 -1
    while True:
        user_string = input("Enter input: ")
    
        if int(user_string) == -1:
            break
        else:
            is_valid = False
            char = user_string.find(",")

            if char != -1:
                is_valid = True

            if is_valid == True:
                words, year = user_string.split(',')
                month, days = words.split(' ')
                
                month_str = get_month_as_int(month.strip())
                
                print(f'{month_str}/{days.strip()}/{year.strip()}')

            elif is_valid == False:
                continue

输出:

Enter input: March 1, 1990 
3/1/1990
Enter input: April 2 1995
Enter input: 7/15/20
Enter input: December 13, 2003
12/13/2003
Enter input: -1
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.