Files
2025PY/day08/01-高级练习.py
2025-05-22 16:50:44 +08:00

146 lines
4.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 1. 复杂身份验证系统
# 题目:
# 模拟一个简单的身份验证系统,用户需要输入 用户名 和 密码,并根据以下规则进行验证:
# 用户名必须是 admin 或 user
# 如果是 admin密码必须是 "admin123"
# 如果是 user密码必须是 "user456"
# 如果用户名或密码错误,提示 "用户名或密码错误"
# 如果输入的用户名不在系统内,提示 "用户不存在"
username = input("请输入用户名: ")
password = input("请输入密码: ")
if username == "admin":
if password == "admin123":
print("欢迎管理员登录!")
else:
print("用户名或密码错误")
elif username == "user":
if password == "user456":
print("欢迎用户登录!")
else:
print("用户名或密码错误")
else:
print("用户不存在")
# 2. ATM 取款机(加强版)
# 题目:
# 用户输入取款金额,必须满足以下条件:
# 取款金额必须是 100 的倍数
# 余额不足时,提示 "余额不足"
# 取款限额:单次取款金额不得超过 3000
# 每日限额:每日取款不得超过 10000
# 取款成功时,显示 "取款成功,余额为 X 元"
balance = 10000
daily_limit = 10000 # 每日可取款额度
amount = int(input("请输入取款金额100 的倍数): "))
if amount % 100 != 0:
print("错误:取款金额必须是 100 的倍数")
elif amount > balance:
print("错误:余额不足")
elif amount > 3000:
print("错误:单次取款金额不得超过 3000 元")
elif amount > daily_limit:
print("错误:超过每日取款限额")
else:
balance -= amount
daily_limit -= amount
print(f"取款成功,余额为 {balance} 元,今日还可取 {daily_limit}")
# 3. 复杂成绩评级
# 题目:
# 输入成绩0-100根据以下规则进行评级
# 95-100A+
# 90-94A
# 85-89B+
# 80-84B
# 70-79C
# 60-69D
# <60F
# 额外要求:
# 如果成绩大于 100 或小于 0提示 "输入错误"
# 如果成绩是 满分 100提示 "满分!你太棒了!"
score = int(input("请输入成绩 (0-100): "))
if 95 <= score <= 100:
print("评级: A+")
if score == 100:
print("满分!你太棒了!")
elif 90 <= score < 95:
print("评级: A")
elif 85 <= score < 90:
print("评级: B+")
elif 80 <= score < 85:
print("评级: B")
elif 70 <= score < 80:
print("评级: C")
elif 60 <= score < 70:
print("评级: D")
elif 0 <= score < 60:
print("评级: F")
else:
print("输入错误,请输入 0-100 之间的成绩")
# 4. 复杂闰年判断
# 题目:
# 编写程序,输入年份 year判断它是否是闰年
# 能被 4 整除但不能被 100 整除,或
# 能被 400 整除
# 额外要求:
# 如果年份小于 0提示 "输入错误"
# 让用户输入 起始年份和结束年份,打印出该范围内所有的闰年。
start_year = int(input("请输入起始年份: "))
end_year = int(input("请输入结束年份: "))
if start_year < 0 or end_year < 0:
print("输入错误,年份必须是正数")
elif start_year > end_year:
print("起始年份不能大于结束年份")
else:
print(f"{start_year}{end_year} 之间的闰年有:")
for year in range(start_year, end_year + 1):
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(year, end=" ")
# 5. 进阶计算器
# 题目:
# 用户输入 两个数字 和 运算符(+、-、*、/、%),计算结果并显示:
# 除法 / 不能除以 0否则提示 "错误:除数不能为 0"
# 允许输入 **(指数运算),比如 2 ** 3 = 8
# 增加异常处理,如果输入非数字,提示 "输入错误"
try:
num1 = float(input("请输入第一个数字: "))
num2 = float(input("请输入第二个数字: "))
operator = input("请输入运算符 (+, -, *, /, %, **): ")
if operator == "+":
print("结果:", num1 + num2)
elif operator == "-":
print("结果:", num1 - num2)
elif operator == "*":
print("结果:", num1 * num2)
elif operator == "/":
if num2 == 0:
print("错误:除数不能为 0")
else:
print("结果:", num1 / num2)
elif operator == "%":
print("结果:", num1 % num2)
elif operator == "**":
print("结果:", num1 ** num2)
else:
print("错误:无效的运算符")
except ValueError:
print("输入错误,请输入数字")