11.if语句练习题

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 整除,是闰年。

要求

  • 使用 andor
  • 打印“闰年”或“平年”

参考答案:

year = int(input("请输入年份:"))

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("闰年")
else:
    print("平年")

要点

  • 使用了 andor,并用括号让逻辑更清晰。

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"]
  • 输入一个用户名,如果在黑名单中,打印“禁止访问”;否则打印“允许访问”。

要求

  • 使用 innot 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/False1/0 自己设计)。

要求

  • 合理使用 if / elif / else
  • 使用 andor

参考答案:

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,程序从用户持续输入数字加入列表(例如输入若干次后,用某种方式结束输入)
  • 只写核心判断部分:在判断阶段,如果列表为空,打印“列表为空”;否则打印“列表不为空”。

要求

  • 写出两种写法:
    1. 使用 if len(items) == 0:
    2. 使用 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)

要求

  • 使用 andor、括号组合逻辑
  • 保证逻辑表达清晰,阅读时一眼就能看出条件含义

参考答案:

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 合并条件)。

发表评论