# 如果 a == '1' 条件成立,就打印 'aaaa' 和 'bbbb'
# 如果条件不成立,那就只打印 'bbbb'
# a = input('请输入一个整数: ')
# if a == '1':
# print("aaaa")
# print("bbbb")
# 如果 a == '1' 条件成立,就打印 'aaaa' 和 'bbbb'
# 如果条件不成立,那就什么都不打印
# a = input('请输入一个整数: ')
# if a == '1':
# print("aaaa")
# print("bbbb")
# 错误写法
# File "D:\Gitee.code\python-fundamentals-\PythonProject\2025--11--19\code18.py", line 18
# print("aaaa")
# ^^^^^
# IndentationError: expected an indented block after 'if' statement on line 17
# a = input('请输入一个整数: ')
# if a == '1':
# print("aaaa")
# print("bbbb")
a = input("Enter the First number: ")
b = input("Enter the Second number: ")
# 条件嵌套
if a == '1':
if b == '2':
print("aaa")
print("bbb")
print("ccc")
2.3 空语句 pass:占位符作用
当条件语句中暂时没有要执行的代码时,用pass占位(保持语法完整),否则会报错:
python复制代码
# 输入一个数字,如果数字为 1,则打印 hello
a = input("请输入一个数字: ")
if a == '1':
# 啥都不做
pass # 空语句
else:
print('hello')
2.4 练习题
python复制代码
# (1) 输入一个整数,判定是否是奇数
a = int(input("请输入一个整数: "))
if a % 2 == 0:
print("偶数")
else:
print("奇数")
# Python 中也像下面可以这样写,这里是负数也没影响,eg: -19 % 2 == 1
# C++/Java 不行,因为如果是负数,eg: -19 % 2 == -1(!=1)
# if a % 2 == 1:
# print("奇数")
# else:
# print("偶数")
python复制代码
# (2) 输入一个整数,判定是正数还是负数
a = int(input("请输入一个整数: "))
if a > 0:
print("正数")
elif a < 0:
print("负数")
else:
print("0")
python复制代码
# (3) 判定年份是否是闰年
# 能被 4 整除,不能被 100 整除
# 能被 400 整除
year = int(input("请输入一个年份: "))
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print("闰年")
else:
print("平年")
# if year % 100 == 0:
# # 世纪闰年的判定
# if year % 400 == 0:
# print("闰年")
# else:
# print("平年")
# else:
# # 普通闰年的判定
# if year % 4 == 0:
# print("闰年")
# else:
# print("平年")
# 打印 1-10 的整数
num = 1
while num <= 10:
print(num)
num += 1 # 更新循环变量,否则会无限循环
示例 2:计算 1-100 的总和
python复制代码
# 计算 1-100 的和
# theSum用来表示计算的和
theSum = 0
num = 1
while num <= 100:
theSum += num
num += 1
print(theSum)
示例 3:计算 5 的阶乘(5! = 5×4×3×2×1)
python复制代码
# 计算 5 的阶乘
ret = 1
num = 1
while num <= 5:
ret *= num
num += 1
print(ret)
示例4:求 1! + 2! + 3! + 4! + 5!
python复制代码
# 计算 1! + 2! + 3! + 4! + 5!
theSum = 0
num = 1
while num <= 5:
# 先计算出当前 num! 是多少,再往 theSum 上进行累加
i = 1
ret = 1
while i <= num:
ret *= i
i += 1
theSum += ret
num += 1
print(f'sum = {theSum}')
3.2 for 循环:遍历可迭代对象
for循环适合 "已知循环次数" 或 "遍历序列 / 集合" 的场景,语法简洁,不用手动管理循环变量,核心是 for 变量 in 可迭代对象。
# 示例:计算1! + 2! + 3! + 4! + 5!(阶乘和)
sum_fact = 0
# 外层循环:控制计算到第几个阶乘
for num in range(1, 6):
fact = 1
# 内层循环:计算当前num的阶乘
for i in range(1, num + 1):
fact *= i
sum_fact += fact
print(f"1!+2!+3!+4!+5! = {sum_fact}") # 输出:153
四. 综合实战:人生重开模拟器(简化版)
结合条件语句和循环语句,实现一个热门文字游戏的核心逻辑,让你直观感受流程控制的用法。
游戏规则:
设定初始属性(颜值、体质、智力、家境),总和不超过 20;
随机生成性别(掷骰子:单数为男孩,双数为女孩);
根据家境生成出生点,影响初始属性;
模拟 1-10 岁的人生经历,每年随机触发事件,更新属性。
再后面的中年和老年阶段大家可以自己下去实现完善一下
完整代码:
python复制代码
# 人生重开模拟器
import random
import sys
import time
print('+----------------------------------------------------------+')
print('| |')
print('| 花有重开日,人无再少年 |')
print('| |')
print('| 欢迎来到,人生重开模拟器 |')
print('| |')
print('+----------------------------------------------------------+')
# 设置初始属性
# 颜值,体质,智力,家境,总和不能超过 20,每一项取值都是 1-10 之间
# 使用循环,使玩家在输入错误的时候,可以重新输入
while True:
print("请设置初始属性(可用点数总数为 20)")
face = int(input("请输入颜值(1-10): "))
strong = int(input("请输入体质(1-10): "))
iq = int(input("请输入智商(1-10): "))
home = int(input("请输入家境(1-10): "))
# 通过条件语句,对于用户输入的属性值做出检验检查
# 这段逻辑,使用 elif 其实也是完全没问题的
# 使用 elif 则是多个分支只能进一个,一旦一个条件满足了,就不会再走其他的分支了
# 此处虽然没有使用 elif ,但是有了 continue,一旦某个条件满足,continue 就会使循环从头再来
# 也就没机会执行后续的条件判定了
if face < 1 or face > 10:
print("颜值设置有误!")
continue
if strong < 1 or strong > 10:
print("体质设置有误!")
continue
if iq < 1 or iq > 10:
print("智商设置有误!")
continue
if home < 1 or home > 10:
print("家境设置有误!")
continue
if face + strong + iq + home > 20:
print("总的属性和超出了 20,设置有误!")
continue
# 如果当前上面的条件都没有触发,则认为玩家输入的数据是合法的
# 此时就可以跳出循环结束输入了
print("初始属性输入完毕!")
print(f"颜值: {face},体质: {strong},智商: {iq},家境: {home}")
break
# 生成角色的性别
# 使用 random.randint(beg,end),就能生成[beg,end]随机整数
point = random.randint(1,6)
# print(f'point = {point}')
if point % 2 == 1:
gender = 'boy'
print("你是个男孩")
else:
gender = 'girl'
print("你是个女孩")
# 设置角色出生点
# 为了简单,就直接生产 1-3 的随机数
point = random.randint(1,3)
if home == 10:
# 第一档
print("你出生在帝都,你的父母都是高官政要")
home += 1
iq += 1
face += 1
elif 7 <= home <= 9:
# 第二档
if point == 1:
print("你出生在大城市,父母是公务员")
face += 2
elif point == 2:
print("你出生在大城市,父母是企业高官")
home += 2
else:
print("你出生在大城市,父母是大学教授")
iq += 2
elif 4 <= home <= 6:
# 第三档
if point == 1:
print("你出生在三线城市,你的父母是医生")
strong += 1
elif point == 2:
print("你出生在镇上,你的父母是老师")
iq += 1
else:
print("你出生在镇上,你的父母是个体户")
home += 1
else:
# 第四档
if point == 1:
print("你出生在农村,父母是辛苦劳作的农民")
strong += 1
face -= 2
elif point == 2:
print("你出生在穷乡僻壤,你的父母是无业游民")
home -= 1
else:
print("你出生在镇上,你的父母感情不合")
strong -= 1
print(f"颜值: {face},体质: {strong},智商: {iq},家境: {home}")
# 幼年阶段
for age in range(1, 11):
# 把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印
info = f'你今年{age}岁. '
# 生产一个 [1,3] 的随机整数
point = random.randint(1,3)
# 接下来编写各种事件的代码
# 性别触发的事件
if gender == 'girl' and home <= 3 and point == 1:
info += "你家里人重男轻女思想非常严重,你被遗弃了!"
print(info)
print("游戏结束!")
sys.exit(0)
# 体质触发的事件
# 使用 elif 是为了保证每年只触发一个事件!
elif strong < 6 and point < 3:
info += "你生了一场病, "
if home >= 5:
info += "在父母的悉心照料下,你康复了"
strong += 1
home -= 1
else:
info += "你的父母没精力管你,你的身体情况更糟糕了"
# 颜值触发的事件
elif face <= 4 and age >= 7:
info += "你长的太丑了,别的小朋友都不喜欢你"
if iq > 5:
info += "你开始发奋图强,努力学习"
iq += 1
else:
if gender == 'boy':
info += "你和别的小朋友经常打架!"
strong += 1
iq -= 1
else:
info += "你经常被别的小朋友欺负"
strong -= 1
# 智商触发的事件
elif iq < 5:
info += "你看起来傻傻的. "
if home >= 8 and age >= 6:
info += "你的父母把你送到更好的学校学习"
iq += 1
elif 4 <= home <= 7:
if gender == 'boy':
info += "你的父母鼓励你多运动,争取成为运动员"
strong += 1
else:
info += "你的父母鼓励你多打扮自己"
face += 1
else:
# 家境 < 4
info += "你的父母为此经常吵架"
if point == 1:
strong -= 1
elif point == 2:
iq -= 1
else:
pass
# 健康成长事件
else:
info += "你健康成长. "
if point == 1:
info += "你看起来更结实了. "
strong += 1
elif point == 2:
info += "你看起来更好看了. "
face += 1
else:
# 无事发生
pass
# 打印这一年发生的事情
print(info)
print(f"颜值: {face},体质: {strong},智商: {iq},家境: {home}")
print("--------------------------------------------------")
# 为了方便观察,加一个小小的暂停动作
time.sleep(1)