1. 判断正数、负数或零
题目:从键盘输入一个整数,判断它是正数、负数还是 0,并打印相应提示。
要求:
- 使用
if / elif / else - 至少覆盖三种情况:大于 0、小于 0、等于 0
示例输出(示例之一):
- 输入:
10→ 输出:正数
参考答案:
num = int(input("请输入一个整数:"))
if num > 0:
print("正数")
elif num < 0:
print("负数")
else:
print("0")
要点:
- 覆盖三种情况:大于 0、小于 0、等于 0。
2. 判断是否为成年人
题目:输入年龄 age,如果年龄大于等于 18,打印“已成年”;否则打印“未成年”。
要求:
- 使用简单
if / else - 可以加入输入检查(例如年龄不能为负数)
参考答案:
age = int(input("请输入年龄:"))
if age < 0:
print("年龄不能为负数")
elif age >= 18:
print("已成年")
else:
print("未成年")
要点:
- 用
elif先处理“非法输入”,让逻辑更清晰。
3. 简单成绩等级判断
题目:输入一个 0~100 的成绩:
- 分数大于等于 90:打印“优秀”
- 分数大于等于 80 且小于 90:打印“良好”
- 分数大于等于 60 且小于 80:打印“及格”
- 其他:打印“不及格”
要求:
- 使用
if / elif / else - 注意条件的区间边界不要遗漏或重复
参考答案:
score = int(input("请输入成绩(0~100):"))
if score < 0 or score > 100:
print("成绩不合法")
elif score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
要点:
- 先排除非法区间。
elif score >= 80:时,前面已经保证< 90,所以不用再写< 90。
4. 判断闰年
题目:输入一个年份 year,判断是否为闰年:
- 能被 4 整除且不能被 100 整除,或者能被 400 整除,是闰年。
要求:
- 使用
and、or - 打印“闰年”或“平年”
参考答案:
year = int(input("请输入年份:"))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print("闰年")
else:
print("平年")
要点:
- 使用了
and、or,并用括号让逻辑更清晰。
5. 登录验证(用户名 + 密码)
题目:
- 假设系统中允许登录的用户名和密码为:
- 用户名:
admin - 密码:
123456
- 用户名:
- 从键盘输入用户名和密码,如果两者都正确,打印“登录成功”,否则打印“登录失败”。
要求:
- 使用
and - 可以分多种错误提示(例如“用户名错误”“密码错误”等),也可以简单只写“登录失败”
参考答案(简单版):
username = input("请输入用户名:")
password = input("请输入密码:")
if username == "admin" and password == "123456":
print("登录成功")
else:
print("登录失败")
参考答案(区分错误类型):
username = input("请输入用户名:")
password = input("请输入密码:")
if username != "admin":
print("用户名错误")
elif password != "123456":
print("密码错误")
else:
print("登录成功")
要点:
- 演示了
==与!=的使用。
6. 黑名单过滤(in / not in)
题目:
- 有一个黑名单列表:
["bad_guy", "spammer", "robot"] - 输入一个用户名,如果在黑名单中,打印“禁止访问”;否则打印“允许访问”。
要求:
- 使用
in或not in
参考答案:
blacklist = ["bad_guy", "spammer", "robot"]
user = input("请输入用户名:")
if user in blacklist:
print("禁止访问")
else:
print("允许访问")
要点:
- 使用
in判断是否在列表中。
7. 多条件优惠判断(and / or 综合)
题目:
- 某电商满减活动规则:
- 满 100 元并且是会员用户,可以打 8 折
- 否则,如果满 200 元,即使不是会员也可以打 9 折
- 其他情况无折扣
- 输入购物金额
amount和是否为会员is_vip(可以用True/False或1/0自己设计)。
要求:
- 合理使用
if / elif / else - 使用
and、or
参考答案:
amount = float(input("请输入购物金额:"))
vip_input = input("是否会员?(y/n):")
is_vip = (vip_input == "y")
if amount >= 100 and is_vip:
print("打 8 折,应付:", amount * 0.8)
elif amount >= 200:
print("打 9 折,应付:", amount * 0.9)
else:
print("无折扣,应付:", amount)
要点:
- 先判断“满 100 且是会员”,再判断“满 200”(不要求会员)。
- 逻辑顺序要与业务规则一致。
8. 字符串包含判断(in)
题目:
- 输入一个字符串
text - 如果字符串中包含单词
"python",打印“包含 python” - 否则打印“不包含 python”
要求:
- 使用
in - 可以考虑忽略大小写(可选进阶)
参考答案(基础版):
text = input("请输入一段文本:")
if "python" in text:
print("包含 python")
else:
print("不包含 python")
参考答案(忽略大小写版):
text = input("请输入一段文本:")
lower_text = text.lower()
if "python" in lower_text:
print("包含 python(忽略大小写)")
else:
print("不包含 python(忽略大小写)")
要点:
- 字符串也可以使用
in。 - 忽略大小写时常用
lower()/upper()。
9. 检查列表是否为空(真值判断)
题目:
- 有一个列表
items,程序从用户持续输入数字加入列表(例如输入若干次后,用某种方式结束输入) - 只写核心判断部分:在判断阶段,如果列表为空,打印“列表为空”;否则打印“列表不为空”。
要求:
- 写出两种写法:
- 使用
if len(items) == 0: - 使用
if not items:
- 使用
参考答案:
items = [] # 假设这里已经通过输入添加过元素
# 写法 1:使用 len
if len(items) == 0:
print("列表为空")
else:
print("列表不为空")
# 写法 2:利用真值判断
if not items:
print("列表为空")
else:
print("列表不为空")
要点:
- 空列表在条件判断中被当作 False。
10. 海象运算符 := 的简单应用
题目(需要 Python 3.8+):
- 不断让用户输入一行内容:
- 如果输入为空字符串(直接按回车),打印“输入为空,请重新输入”
- 如果输入为
"quit",打印“程序结束”,并退出循环 - 其他情况,打印“你输入了:xxx”
要求:
- 先用不使用
:=的普通写法实现 - 再尝试用
while (line := input(...)) != "quit":的形式改写
参考答案(普通版,不使用 :=):
while True:
line = input("请输入内容(输入 quit 退出):")
if line == "":
print("输入为空,请重新输入")
elif line == "quit":
print("程序结束")
break
else:
print("你输入了:", line)
参考答案(使用海象运算符版):
while True:
if (line := input("请输入内容(输入 quit 退出):")) == "":
print("输入为空,请重新输入")
elif line == "quit":
print("程序结束")
break
else:
print("你输入了:", line)
要点:
:=一边给line赋值,一边返回这个值给if条件判断。
11. 使用 != 的条件判断
题目:
- 输入一个颜色字符串
color - 如果颜色不是
"red",打印“不是红色”;如果颜色是"red",打印“是红色”。
要求:
- 至少写出一种使用
!=的判断方式 - 思考在什么情况下使用“不等于”会比“等于”更自然
参考答案:
color = input("请输入颜色:")
if color != "red":
print("不是红色")
else:
print("是红色")
思考:
- 当“不是某个值”的情况更多时,用
!=写逻辑更自然。
12. 复杂逻辑组合(括号与优先级)
题目:
- 某网站要求:
- 年龄大于等于 18 岁
- 并且(是会员用户,或者输入了邀请码)
- 输入:
age(整数)、is_vip(布尔或 0/1)、has_code(布尔或 0/1)
要求:
- 使用
and、or、括号组合逻辑 - 保证逻辑表达清晰,阅读时一眼就能看出条件含义
参考答案:
age = int(input("请输入年龄:"))
vip_input = input("是否会员?(y/n):")
is_vip = (vip_input == "y")
code_input = input("是否有邀请码?(y/n):")
has_code = (code_input == "y")
if age >= 18 and (is_vip or has_code):
print("允许访问网站")
else:
print("不满足访问条件")
要点:
not>and>or,但实际写代码时推荐加括号明确逻辑。
13. 使用 not 的逻辑反转
题目:
- 输入一个字符串
username - 如果用户名为空字符串,打印“用户名不能为空”
- 否则打印“欢迎,xxx”
要求:
- 至少写出一个版本使用
not username的写法
参考答案:
username = input("请输入用户名:")
if not username:
print("用户名不能为空")
else:
print("欢迎,", username)
要点:
- 空字符串在 if 中被当作 False。
not username等价于username == ""。
14. if 嵌套使用(会员等级与折扣)
题目:
- 有三种会员等级:
vip:打 7 折gold:打 8 折normal:打 9 折
- 其他等级:无折扣
- 输入:会员等级
level和原价price,输出应付金额。
要求:
- 可以用
if / elif / else,也可以适当使用 if 嵌套
参考答案:
level = input("请输入会员等级(vip/gold/normal):")
price = float(input("请输入原价:"))
if level == "vip":
pay = price * 0.7
elif level == "gold":
pay = price * 0.8
elif level == "normal":
pay = price * 0.9
else:
pay = price
print("应付金额:", pay)
嵌套写法示例(了解即可):
if level in ["vip", "gold", "normal"]:
if level == "vip":
pay = price * 0.7
elif level == "gold":
pay = price * 0.8
else:
pay = price * 0.9
else:
pay = price
15. 综合小项目:简单菜单系统
题目:
编写一个简单的命令行菜单程序:
1. 查询余额
2. 存钱
3. 取钱
4. 退出
- 初始余额为 1000
- 用户输入选项:
- 1:打印当前余额
- 2:输入一个金额,增加到余额
- 3:输入一个金额,如果余额足够则扣减,否则提示“余额不足”
- 4:打印“感谢使用”,并退出程序
- 输入其他数字:提示“无效选项”
要求:
- 使用
while循环 +if / elif / else - 至少用到一次布尔表达式和一次
and/or中的任意一个
参考答案:
balance = 1000.0
while True:
print("==== 简易银行系统 ====")
print("1. 查询余额")
print("2. 存钱")
print("3. 取钱")
print("4. 退出")
choice = input("请输入选项(1-4):")
if choice == "1":
print("当前余额为:", balance)
elif choice == "2":
amount = float(input("请输入存入金额:"))
if amount > 0:
balance += amount
print("存钱成功,当前余额:", balance)
else:
print("金额必须大于 0")
elif choice == "3":
amount = float(input("请输入取钱金额:"))
if amount <= 0:
print("金额必须大于 0")
elif amount > balance:
print("余额不足")
else:
balance -= amount
print("取钱成功,当前余额:", balance)
elif choice == "4":
print("感谢使用,再见!")
break
else:
print("无效选项,请重新输入")
要点:
- 使用
while True + break实现循环菜单。 - 使用多个
if / elif / else分支控制不同功能。 - 在取钱时使用了
and / or中的逻辑(这里示例用的是多个 if/elif,你也可以自己尝试用and合并条件)。