从键盘输入你的出生年月,编程输出你出生的月份有多少天,是什么季节,假设规定3~5月为春季,6~8月为夏季,9~11月为秋季,1、2和12月为冬季。要求程序能够在用户输入非法字符或者非法的年份和月份时输
时间: 2023-05-31 18:19:55 浏览: 77
### 回答1:
这道题是让你根据输入的出生年月,编程输出你出生的月份有多少天。假设规定3~5月为春季,6~8月为夏季,9~11月为秋季,1、2月和12月为冬季。要求程序能够在用户输入非法字符或者非法的年份和月份时输出错误信息。
### 回答2:
本题需要用到语言特定的库来获取系统当前的时间,以便进行年份和月份的计算。我们可以使用Python语言的datetime库来实现。
首先,我们需要从键盘输入用户的出生年月信息,可以使用input函数来实现:
birth = input("请输入你的出生年月,格式为YYYY-MM:")
然后,我们需要利用datetime库来获取当前系统时间,以便计算出生年份和月份:
import datetime
now = datetime.datetime.now()
year = now.year
month = now.month
接下来,我们需要将用户输入的出生年月字符串进行处理,获取其中的年份和月份:
try:
birth_year = int(birth[:4])
birth_month = int(birth[5:])
except ValueError:
print("输入格式错误,请重新输入。")
exit()
在上述代码中,我们使用try-except语句来捕获非法字符的异常,并通过exit函数来退出程序。
接下来,我们需要计算出生月份的天数,并判断出生季节:
month_days = [31,28,31,30,31,30,31,31,30,31,30,31]
if birth_year % 4 == 0 and birth_year % 100 != 0 or birth_year % 400 == 0:
month_days[1] = 29
if birth_month < 1 or birth_month > 12:
print("输入格式错误,请重新输入。")
exit()
print("出生月份有{}天。".format(month_days[birth_month-1]))
if birth_month in [3,4,5]:
print("出生季节为春季。")
elif birth_month in [6,7,8]:
print("出生季节为夏季。")
elif birth_month in [9,10,11]:
print("出生季节为秋季。")
else:
print("出生季节为冬季。")
在上述代码中,我们定义了一个包含每个月天数的列表month_days,然后判断闰年并覆盖二月的天数。接着进行了出生月份的判断和季节的输出。
最后,如果用户输入的是非法的年份或月份,程序会输出“输入格式错误,请重新输入。”的提示信息,并通过exit函数退出程序。完成代码如下:
import datetime
birth = input("请输入你的出生年月,格式为YYYY-MM:")
now = datetime.datetime.now()
year = now.year
month = now.month
try:
birth_year = int(birth[:4])
birth_month = int(birth[5:])
except ValueError:
print("输入格式错误,请重新输入。")
exit()
month_days = [31,28,31,30,31,30,31,31,30,31,30,31]
if birth_year % 4 == 0 and birth_year % 100 != 0 or birth_year % 400 == 0:
month_days[1] = 29
if birth_month < 1 or birth_month > 12:
print("输入格式错误,请重新输入。")
exit()
print("出生月份有{}天。".format(month_days[birth_month-1]))
if birth_month in [3,4,5]:
print("出生季节为春季。")
elif birth_month in [6,7,8]:
print("出生季节为夏季。")
elif birth_month in [9,10,11]:
print("出生季节为秋季。")
else:
print("出生季节为冬季。")
### 回答3:
首先,我们需要通过输入函数获取用户输入的出生年月,并将其转换为整数格式。然后,我们需要对用户输入的年份和月份进行检验。如果年份和月份超出了合法范围(例如年份小于1900年或大于当前年份,月份小于1或大于12),则输出“非法输入”,程序结束。如果用户输入的日期符合要求,我们可以开始编写程序输出所需信息。
根据输入的月份,我们可以使用if-else语句来判断该月份有多少天,并将结果输出。需要注意的是,有些月份的天数需要根据年份是否为闰年来进行特殊处理。
接下来,我们需要判断输入的月份在哪个季节。同样地,我们可以使用if-else语句来实现。如果输入的月份在3~5月之间,则为春季;如果在6~8月之间,则为夏季;如果在9~11月之间,则为秋季;如果是1、2或12月,则为冬季。根据判断结果输出对应的季节。
最后,我们需要考虑非法输入的情况。如果用户输入的不是数字、年份和月份不符合要求或者输入的月份天数判断出错,我们需要输出“非法输入”,并结束程序。
下面是可能的代码实现:
```
birth = input("请输入您的出生年月(格式:yyyy-mm):")
try:
year, month = map(int, birth.split('-'))
if year < 1900 or year > datetime.now().year or month < 1 or month > 12:
print("非法输入")
else:
if month == 2:
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
days = 29
else:
days = 28
elif month in [1, 3, 5, 7, 8, 10, 12]:
days = 31
else:
days = 30
if month in [3, 4, 5]:
season = "春季"
elif month in [6, 7, 8]:
season = "夏季"
elif month in [9, 10, 11]:
season = "秋季"
else:
season = "冬季"
print("您出生的月份有", days, "天,属于", season)
except:
print("非法输入")
```
在这段代码中,我们首先使用split函数将用户输入的字符串按照“-”分割为年份和月份,然后使用map函数将其转换为整数格式。接下来,我们使用if-else语句对输入进行检验,如果年份和月份符合要求,则继续执行程序;否则输出“非法输入”,结束程序。
在接下来的代码中,我们使用if-else语句判断输入的月份有多少天,并使用一个变量days存储结果。接着,我们又使用if-else语句判断该月份属于哪个季节,并使用一个变量season存储结果。最后,我们输出结果,程序结束。
需要注意的是,在程序的主体代码中使用了try-except语句,这是为了避免可能出现的异常错误,如输入非数字等情况。如果发生这些错误,程序会输出“非法输入”,并结束程序。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)