题1:输入某年某月某日,判断这一天是这一年的第几天?
题2:输入三个整数x,y,z,请把这三个数由小到大输出。
题3:用至少2种方法写出斐波那契数列函数。
*将异常处理的代码添加至以上三组练习当中。
引用 皆我百晓生 小程序回复内容作答:
题1:输入某年某月某日,判断这一天是这一年的第几天?
import datetime
def get_day_of_year(year, month, day):
try:
date = datetime.datetime(year, month, day)
day_of_year = date.timetuple().tm_yday
return day_of_year
except ValueError:
print("输入的日期无效!")
return None
year = int(input("输入年份:"))
month = int(input("输入月份:"))
day = int(input("输入日期:"))
day_of_year = get_day_of_year(year, month, day)
if day_of_year:
print("这一天是这一年的第{}天。".format(day_of_year))
题2:输入三个整数x,y,z,请把这三个数由小到大输出。
def sort_numbers(x, y, z):
numbers = [x, y, z]
numbers.sort()
return numbers
try:
x = int(input("输入第一个整数:"))
y = int(input("输入第二个整数:"))
z = int(input("输入第三个整数:"))
sorted_numbers = sort_numbers(x, y, z)
print("由小到大排序的结果:", sorted_numbers)
except ValueError:
print("输入的不是整数!")
题3:用至少2种方法写出斐波那契数列函数。
方法一:使用递归
def fibonacci_recursive(n):
if n <= 0:
print("输入的数必须是正整数!")
return None
elif n == 1:
return 0
elif n == 2:
return 1
else:
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
try:
n = int(input("输入正整数n:"))
result = fibonacci_recursive(n)
if result is not None:
print("斐波那契数列的第{}个数是:{}".format(n, result))
except ValueError:
print("输入的不是整数!")
方法二:使用循环
def fibonacci_loop(n):
if n <= 0:
print("输入的数必须是正整数!")
return None
else:
fib_sequence = [0, 1]
for i in range(2, n):
fib_sequence.append(fib_sequence[-1] + fib_sequence[-2])
return fib_sequence[-1]
try:
n = int(input("输入正整数n:"))
result = fibonacci_loop(n)
if result is not None:
print("斐波那契数列的第{}个数是:{}".format(n, result))
except ValueError:
print("输入的不是整数!")
以上代码添加了异常处理,如果用户输入的内容不符合要求,会输出相应的错误信息。
【以下回答由 GPT 生成】
代码如下所示:
def is_leap_year(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
else:
return False
def calculate_days(year, month, day):
# 判断闰年
if is_leap_year(year):
days_of_month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
else:
days_of_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
days = sum(days_of_month[:month-1]) + day
return days
# 测试样例
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
result = calculate_days(year, month, day)
print(f"{year}年{month}月{day}日是该年的第{result}天。")
sort()
方法对列表进行排序。代码如下所示:
def sort_numbers(x, y, z):
numbers = [x, y, z]
numbers.sort()
return numbers
# 测试样例
x = int(input("请输入第一个整数:"))
y = int(input("请输入第二个整数:"))
z = int(input("请输入第三个整数:"))
result = sort_numbers(x, y, z)
print(f"从小到大排序后的结果为:{result}")
在Python中,我们可以使用try-except
语句来捕获和处理异常。下面是对如上代码进行异常处理的示例:
def is_leap_year(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
else:
return False
def calculate_days(year, month, day):
try:
# 判断闰年
if is_leap_year(year):
days_of_month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
else:
days_of_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
days = sum(days_of_month[:month-1]) + day
except:
raise ValueError("输入的日期无效,请重新输入。")
return days
def sort_numbers(x, y, z):
try:
numbers = [x, y, z]
numbers.sort()
except:
raise ValueError("输入的数值无效,请重新输入。")
return numbers
# 测试样例
try:
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
result1 = calculate_days(year, month, day)
print(f"{year}年{month}月{day}日是该年的第{result1}天。")
x = int(input("请输入第一个整数:"))
y = int(input("请输入第二个整数:"))
z = int(input("请输入第三个整数:"))
result2 = sort_numbers(x, y, z)
print(f"从小到大排序后的结果为:{result2}")
except ValueError as e:
print(str(e))
请注意,在异常处理代码中,如果捕获到异常,我们使用raise
语句再次抛出异常,并传入相应的错误消息。
【相关推荐】