- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
11小时前关门了。
Improve this question
在本实验中,您应创建一个字典,其中包含十二个三字母缩写,每个月作为关键字,每个月的天数作为值。缩写使用首字母大写,每个关键字使用以下值:
一月、三月、五月、七月、八月、十月、十二月应全部使用31 Apr,六月、九月、十一月应全部使用30,二月应使用28。在输出任何其他内容之前,先输出字典,然后输出一个空行。
然后,您将要求用户输入月份的三个字母缩写、数字日和数字年。
如果用户输入的是有效日期,则输出类似于以下内容的消息:
Jan 1, 1994 is a valid date.
如果用户输入的不是有效日期,则输出类似于以下内容的消息:
Jan 0, 1994 isn't a valid date.
有效日期将满足以下条件:
- 缩写与您创建的字典中的12个键之一匹配。
- 该日在月和年的有效日范围内(请参阅有关闰年的注解)。
- 年份必须是1752年或之后,即美国采用公历的年份。
对于闰年:
闰年可以被4整除,而不能被100整除,或者可以被400整除。如果一年是闰年,则应允许二月有29天。处理此异常错误时,不应向字典中添加任何额外内容。可以使用多种不同的方法来实现此MSP的解决方案。以下是有关可能解决方案的一些观察结果:
使用成员资格运算符可以简化有效月份的测试。可能会有许多嵌套的选择语句。使用逻辑运算符有助于创建更短的解决方案。给定以下输入:
Jan
5
1993
以下是示例输出:
{'Jan': 31, 'Feb': 28, 'Mar': 31, 'Apr': 30, 'May': 31, 'Jun': 30, 'Jul': 31, 'Aug': 31, 'Sep': 30, 'Oct': 31, 'Nov': 30, 'Dec': 31}
Enter 3 character abbreviation for month: Jan
Enter day: 5
Enter year: 1993
Jan 5, 1993 is a valid date.
下面是另一个例子,使用二月份的错误数据:
Feb
29
2003
输出如下所示:
{'Jan': 31, 'Feb': 28, 'Mar': 31, 'Apr': 30, 'May': 31, 'Jun': 30, 'Jul': 31, 'Aug': 31, 'Sep': 30, 'Oct': 31, 'Nov': 30, 'Dec': 31}
Enter 3 character abbreviation for month: Feb
Enter day: 29
Enter year: 2025
Feb 29, 2025 isn't a valid date.
我试过:
allMonths = {'Jan': 31, 'Feb': 28, 'Mar': 31, 'Apr': 30, 'May': 31, 'Jun': 30,
'Jul': 31, 'Aug': 31, 'Sep': 30, 'Oct': 31, 'Nov': 30, 'Dec': 31}
print(allMonths)
month = input("Enter 3 character abbreviation for month: ").strip()
day = int(input("Enter day: "))
year = int(input("Enter year: "))
if(year >= 1752):
if((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):
if month in allMonths.keys():
if(month == "Feb"):
daysOfMonth = 29
else:
daysOfMonth = allMonths[month]
if day <= daysOfMonth:
print(month, day, year, "is a valid date.")
else:
print(month, day, year, "isn't a valid date.")
else:
print("Invalid month entered!")
else:
if month in allMonths.keys():
daysOfMonth = allMonths[month]
if day <= daysOfMonth:
print(month, day, year, "is a valid date.")
else:
print(month, day, year, "isn't a valid date.")
else:
print("Invalid month entered!")
else:
print("Invalid year entered!")
问题是,Jan': 31, 'Feb': 28, 'Mar': 31, 'Apr': 30, 'May': 31, 'Jun': 30, 'Jul': 31, 'Aug': 31, 'Sep': 30, 'Oct': 31, 'Nov': 30, 'Dec': 31} Enter 3 character abbreviation for month: Enter day: Enter year: Jan 1 1994 is a valid date.
总是在每个输出上打印,而它应该是这样的:Jan 1, 1994 is a valid date.
1条答案
按热度按时间0yg35tkg1#
或许可以删除这一行?
这是负责打印月份和长度,你似乎想停止。