关注

【Python学习】(掌握顺序、条件、循环语句以及实现“人生重开模拟器“综合案例)

🔥承渊政道:个人主页

❄️个人专栏: 《C语言基础语法知识》 《数据结构与算法》 《C++知识内容》 《Linux系统知识》 《算法刷题指南》 《测评文章活动推广》 《大模型语言路线学习》 《MySQL数据库学习》 《Python知识内容》

✨逆境不吐心中苦,顺境不忘来时路!✨
🎬 博主简介:

在学习 Python 的过程中,顺序、条件和循环语句是最基础、也是最核心的三类流程控制结构.无论是简单的数据处理,还是复杂的项目逻辑,程序本质上都离不开"先做什么、遇到不同情况怎么判断、重复任务如何执行"这三个问题.本篇文章将围绕Python中的顺序语句、条件语句和循环语句展开讲解,帮助你理解程序执行流程的基本规律.为了让这些知识点不只是停留在语法层面,文章最后还会结合一个有趣的综合案例——“人生重开模拟器”,把前面学到的内容串联起来,实现一个可以根据不同属性和选择生成不同人生结果的小程序.通过这个案例,你不仅能巩固 if 判断、for 循环、while 循环等基础语法,还能体会到如何把多个知识点组合起来完成一个完整的小项目.希望学完本篇内容后,你能真正理解流程控制在Python编程中的作用,并具备独立编写简单交互程序的能力.废话不多说,下面跟着小编的节奏🎵一起去疯狂的学习吧!


1.顺序语句

Python中的顺序语句指程序按照代码书写的先后顺序,从上到下一条一条执行.这是最基本的程序执行结构.

例如:

print("开始程序")
a = 10
b = 20
c = a + b
print(c)
print("程序结束")

执行顺序是:

开始程序
a 被赋值为 10
b 被赋值为 20
c 计算为 30
输出 30
程序结束

运行结果:

开始程序
30
程序结束

顺序语句常见形式包括:

变量赋值
输入语句
输出语句
表达式计算
函数调用

例如:

name = input("请输入你的名字:")
age = int(input("请输入你的年龄:"))

print("你好," + name)
print("明年你将", age + 1, "岁")

这里程序会先输入名字,再输入年龄,最后依次输出结果.

简单来说:

顺序语句就是 Python 默认的执行方式:先写的先执行,后写的后执行.

默认情况下,Python 的代码执行顺序是按照从上到下的顺序,依次执行的.

print("1")
print("2")
print("3")

执行结果一定为"123",而不会出现"321"或者"132"等.这种按照顺序执行的代码,我们称为顺序语句.


2.条件语句

2.1什么是条件语句

条件语句能够表达"如果 … 否则 …"这样的语义.这构成了计算机中基础的逻辑判定.
条件语句也叫做分支语句,表示了接下来的逻辑可能有几种走向.
Python中的条件语句用于根据条件是否成立,决定执行哪一段代码.

如果 我认真敲代码
我就很容易找到工作
否则
我就容易毕业就失业

其中"我认真敲代码"称为条件.如果条件成立(条件为真),则会出现"我就很容易找到工作"这个情况.如果条件不成立(条件为假), 则会出现"我就容易毕业就失业".

当然,同样的逻辑,还可以反着表达.

如果 我选择躺平摆烂
我就容易毕业就失业
否则
我就很容易找到工作

虽然结构变了,但是整体表达的语义是等价的.


2.2语法格式

Python中使用 if else关键字表示条件语句.

最常见的是 if 语句:

age = 18

if age >= 18:
    print("你已经成年")

如果条件 age >= 18 成立,就执行缩进里面的代码.

1.if 语句

if expression:
do_something1
do_something2
next_something

如果expression值为True,则执行do_something1,do_something2,next_something.
如果expression值为False,则只执行 next_something,不执行do_something1,do_something2.

score = 90

if score >= 60:
    print("及格")

运行结果:

及格

2.if…else 语句

if expression:
do_something1
else:
do_something2

如果expression值为True,则执行do_something1
如果expression值为False,则执行do_something2

当条件成立执行一段代码,不成立执行另一段代码.

score = 50

if score >= 60:
    print("及格")
else:
    print("不及格")

运行结果:

不及格

3.if…elif…else 语句

if expression1:
do_something1
elif expression2:
do_something2
else:
do_something3

如果expression1值为True,则执行do_something1
如果expression1值为False,并且expression2为True则执行do_something2
如果expression1值为False,并且expression2为False则执行do_something3

用于多个条件判断.

score = 85

if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

运行结果:

良好

注意: Python中的条件语句写法,和很多编程语言不太一样.
if后面的条件表达式,没有 ( ),使用 : 作为结尾.
if/else 命中条件后要执行的"语句块",使用缩进 (通常是4个空格或者1个tab)来表示,而不是 { }
对于多条件分支,不是写作 else if,而是elif (合体了).

示例: 输入1表示愿意认真学习,输入2表示躺平摆烂.

choice = input("输入 1 表示认真学习,输入 2 表示躺平摆烂:")

if choice == "1":
    print("你会找到好工作!")
elif choice == "2":
    print("你可能毕业就失业了!")
else:
    print("你的输入有误!")

4.条件语句的基本格式

if 条件:
    条件成立时执行的代码
elif 另一个条件:
    另一个条件成立时执行的代码
else:
    所有条件都不成立时执行的代码

注意:Python用缩进表示代码块,通常是 4 个空格.

简单来说:

条件语句就是让程序“根据不同情况做不同事情”.


2.3缩进和代码块

缩进和代码块是 Python 条件语句里最重要的规则.

Python 不用 {} 表示代码范围,而是用缩进表示"哪些代码属于同一组".

1.什么是缩进?

缩进就是代码前面的空格.

例如:

if choice == "1":
    print("你会找到好工作!")

这里的 print() 前面有缩进,表示它属于上面的 if.

也就是说:

if choice == "1":
    print("你会找到好工作!")

意思是:

如果 choice == "1" 成立,就执行 print("你会找到好工作!")

2.什么是代码块?

代码块就是属于同一个结构的一组代码.

例如:

if choice == "1":
    print("你会找到好工作!")
    print("继续加油!")

这两个 print() 都有相同缩进,所以它们都属于 if 代码块.

如果条件成立,两个都会执行.

3.缩进规则总结
记住这几条就够了:

  1. ifelifelse 后面要写英文冒号 :
  2. 冒号下面的代码必须缩进
  3. 同一个代码块里的缩进必须一样
  4. 一般使用 4 个空格 或按一次 Tab
  5. 不要一会儿用空格,一会儿用Tab,容易报错

最简单理解:

if 条件:
    条件成立时执行的代码
else:
    条件不成立时执行的代码

缩进去的代码,才属于上面的条件语句.

代码块指的是一组放在一起执行的代码.
在Python中使用缩进表示代码块.不同级别的缩进,程序的执行效果是不同的.

# 代码1
a = input("请输入一个整数: ")
if a == "1":
print("hello")
print("world")
# 代码2
a = input("请输入一个整数: ")
if a == "1":
print("hello")
print("world")

注意上述代码的区别.
在代码1中,print(“world”) 有一级缩进,这个语句属于 if 内的代码块,意味着条件成立,才执行,条件不成立,则不执行.
在代码2中,print(“world”) 没有缩进,这个语句是 if 外部的代码,不属于 if 内部的代码块.意味着条件无论是否成立,都会执行.
另外,代码块内部还可以嵌套代码块.

a = input("请输入第一个整数: ")
b = input("请输入第二个整数: ")
if a == "1":
if b == "2":
print("hello")
print("world")
print("python")

在这个代码中:
print(“hello”)具有两级缩进,属于 if b == “2” 条件成立的代码块.
print(“world”) 具有一级缩进,属于 if a == “1” 条件成立的代码块.
print(“python”) 没有缩进, 无论上述两个条件是否成立, 该语句都会执行.

基于缩进的方式表示代码块,带来的好处就是强制要求程序猿要写明确的缩进,来明确代码之间的相对关系.如果缩进书写的不对,则直接报错.同时,带来的坏处就是,如果缩进层次比较多,就容易分不清楚某个语句属于哪个层级.


2.4练习

(1)输入一个整数,判定是否是奇数.

a = int(input("请输入一个整数: "))
if a % 2 == 0:
    print("偶数")
else:
    print("奇数")


(2) 输入一个整数,判定是正数还是负数.

a = int(input("请输入一个整数: "))
if a > 0:
    print("正数")
elif a < 0:
    print("负数")
else:
    print("为 0")


(3)判定年份是否是闰年

year = int(input("请输入年份: "))
if (year % 100 != 0 and year % 4 == 0) or year % 400:
    print("闰年")
else:
    print("平年")


2.5空语句pass

pass 是 Python 的空语句,表示"什么都不做".

它常用于:语法上必须写一段代码,但你暂时还没想好写什么的时候.

1.基本用法

if 条件:
    pass
else:
    print("执行 else")

pass 不会产生任何效果,只是占一个位置,防止程序报错.

2.为什么需要 pass
比如你这样写会报错:

if True:

因为 if 后面必须有代码块.

即使你写注释也不行:

if True:
    # 以后再写

这也会报错,因为注释不是代码.

正确写法:

if True:
    pass

代码示例: 输入一个数字, 如果数字为1,则打印hello.

a = int(input("请输入一个整数:"))
if a == 1:
    print("hello")

这个代码也可以等价写成:

a = int(input("请输入一个整数:"))
if a != 1:
    pass
else:
    print("hello")

其中pass表示空语句,并不会对程序的执行有任何影响,只是占个位置,保持Python语法格式符合要求.


3.循环语句

循环语句用于让一段代码重复执行多次.

Python中常见循环有两种:

while 循环
for 循环

3.1while循环

while 的意思是:只要条件成立,就一直执行.

基本语法格式
while 条件:
循环体

条件为真,则执行循环体代码.
条件为假,则结束循环.

i = 1

while i <= 5:
    print(i)
    i = i + 1

运行结果:

1
2
3
4
5

解释:

while i <= 5:

表示只要 i 小于等于 5,就执行下面缩进的代码.

注意:循环里面一定要让条件有机会变成不成立,否则会变成死循环.

代码示例: 打印 1-10 的整数

num = 1
while num <= 10:
    print(num)
    num += 1

代码示例: 计算 1-100 的和

sum = 0
num = 1
while num <= 100:
    sum += num
    num += 1
print(sum)

代码示例: 计算 5 的阶乘

result = 1
n = 1
while n <= 5:
    result *= n
    n += 1
print(result)

代码示例: 求 1! + 2! + 3! + 4! + 5!

num = 1
sum = 0
while num <= 5:
    factorResult = 1
    i = 1
    while i <= num:
        factorResult *= i
        i += 1
    sum += factorResult
    num += 1
print(sum)

这个程序用到了两重循环.也就是在循环语句中也可以套循环.


3.2for循环

for 循环常用于按照顺序遍历一组内容.

基本语法格式
for 循环变量 in 可迭代对象:
循环体

注意:
python的for和其他语言不同,没有"初始化语句",“循环条件判定语句”,“循环变量更新语句”,而是
更加简单所谓的"可迭代对象",指的是"内部包含多个元素,能一个一个把元素取出来的特殊变量"
例如:

for i in range(5):
    print(i)

运行结果:

0
1
2
3
4

注意:

range(5)

表示从 04,不包括 5.

代码示例: 打印 1-10

for i in range(1, 11):
    print(i)

使用range函数,能够生成一个可迭代对象.生成的范围是 [1, 11), 也就是 [1, 10]

代码示例: 打印 2, 4, 6, 8, 10

for i in range(2, 12, 2):
    print(i)

通过range的第三个参数,可以指定迭代时候的"步长".也就是一次让循环变量加几.

代码示例: 打印 10-1

for i in range(10, 0, -1):
    print(i)

range的步长也可以设定成负数.

代码示例: 求 1 - 100 的和

sum = 0
for i in range(1, 101):
    sum += i
print(sum)

3.3range()常见写法

range(5)

表示:

0, 1, 2, 3, 4
range(1, 6)

表示:

1, 2, 3, 4, 5
range(1, 10, 2)

表示:

1, 3, 5, 7, 9

格式是:

range(开始值, 结束值, 步长)

结束值不包含在里面.


3.4continue跳过本次循环

continue 表示跳过本次循环,继续下一次循环.

for i in range(1, 6):
    if i == 3:
        continue
    print(i)

运行结果:

1
2
4
5

i == 3 时,不执行下面的 print(i),直接进入下一轮.

代码示例: 模拟吃包子.吃第3个包子的时候吃出了一只虫.

for i in range(1, 6):
    if i == 3:
        continue
    print(f"吃完第 {i} 个包子")

3.5break结束循环

break 表示立刻结束整个循环.

for i in range(1, 6):
    if i == 3:
        break
    print(i)

运行结果:

1
2

i == 3 时,循环直接结束.

代码示例: 模拟吃包子. 吃第3个包子的时候吃出了半只虫.

for i in range(1, 6):
    if i == 3:
        break
    print(f"吃完第 {i} 个包子")

代码示例: 输入若干个数字,求平均值.使用 “分号” 作为结尾.

sum = 0
count = 0
while True:
    num = input("请输入数字:")
    if num == ';':
        break
    num = float(num)
    sum += num
    count += 1
print(sum / count)

最简单记住:

循环语句就是让代码重复执行。
while 看条件,for 常配合 range() 使用。


4.综合案例–实现"人生重开模拟器"

实现 “人生重开模拟器”.这是一款之前很火的文字类小游戏.玩家输入角色的初始属性之后,就可以开启不同的人生经历.大家可以在网上搜索"人生重开模拟器",就可以玩到这个游戏的各种版本. 完整的程序代码较多, 此处我们先说明实现其中的一部分逻辑,然后给一个完整实现部分.


4.1设置初始属性

在游戏中我们设定四个属性.

  • 颜值 (face)
  • 体质 (strong)
  • 智力 (iq)
  • 家境 (home)

我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20.
如果玩家输入的初始属性不合理, 就提示输入有误, 重新输入.

print("+---------------------------------------------------------------------+")
print("| |")
print("| 花有重开日, 人无再少年 |")
print("| |")
print("| 欢迎来到, 人生重开模拟器 |")
print("| |")
print("+---------------------------------------------------------------------+")
# 设置初始属性
while True:
    print("请设定初始属性(可用总点数 20)")
    face = int(input("设定 颜值(1-10):"))
    strong = int(input("设定 体质(1-10):"))
    iq = int(input("设定 智力(1-10):"))
    home = int(input("设定 家境(1-10):"))
    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("初始属性设定完成!")
    break

4.2设置性别

通过random.randint(1, 6)生成一个[1, 6]的随机整数,类似于掷色子.

  • 如果是单数,则性别设为男孩.
  • 如果是双数,则性别设为女孩.

男孩和女孩会遇到不同的事件.

point = random.randint(1, 6) # 掷色子
if point % 2 == 1:
    gender = 'boy'
    print("你是个男孩")
else:
    gender = 'girl'
    print("你是个女孩")

4.3设置出生点

首先按照家境(home), 分成四个档位.

  • 10 是第一档.加成最高
  • [7, 9] 是第二档.也有一些加成
  • [4, 6] 是第三档.加成较少
  • [1, 3] 是第四档.会扣掉属性.

再扔一次色子,生成[1, 3]的随机数,用来表示每一种细分情况.
这里的代码主要就是各种if else构成.

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('你出生在三线城市, 你的父母是教师')
        iq += 1
elif point == 2:
    print('你出生在镇上, 你的父母是医生')
    strong += 1
else:
    print("你出生在镇上, 你的父母是个体户")
    home += 1
else:
    if 1 <= point <= 2:
    print('你出生在村里, 你的父母是辛苦劳作的农民')
    strong += 1
    face -= 2
elif 3 <= point <= 4:
    print('你出生在穷乡僻壤, 你的父母是无业游民')
    home -= 1
else:
    print('你出生在镇上, 你父母感情不和')
    strong -= 1

4.4针对每一岁,生成人生经历

按照年龄,把人生经历分成四个阶段:

  • 幼年阶段 [1, 10]
  • 青年阶段 [11, 20]
  • 壮年阶段 [20, 50]
  • 老年阶段 50 岁以上.

每个阶段都会有不同的精力和事件发生.

  • 幼年阶段可塑性强, 体质, 颜值, 智力都会有较快变化
  • 青年阶段主要是求学, 同时父母一辈会有明显变化, 智力和家境会有明显变化.
  • 壮年阶段相对平稳, 属性变化不大, 主要是一些随机事件影响到属性.
  • 老年阶段体质, 颜值, 智力都会显著退化, 并且随着年龄的上升, 疾病/死亡的风险逐渐升高.

此处我们以幼年为例, 简单实现一下这里的处理逻辑.

  • 使用for循环,按照年龄循环起来.
  • 针对每一年,先掷一次 [1, 3] 的色子,根据不同的随机数值,来触发不同的事件.
  • 根据性别,年龄,各种属性,来触发不同的事件.这里都使用if - else的方式来组织.
  • 不同的事件可能会对属性有正面/负面的影响.
  • 在每一年的最后,打印这一年遇到的事情.
  • 如果夭折,则直接 sys.exit(0) 退出程序.
  • 使用time.sleep(1)使程序暂停执行1s,方便观察程序结果.
for age in range(1, 11):
    info = f'你今年 {age} 岁,'
    point = random.randint(1, 3)

    # 性别触发事件
    if gender == 'girl' and home <= 3 and point == 1:
        info += '你家里人重男轻女思想非常严重,你被遗弃了!'
        print(info)
        print("游戏结束!")
        sys.exit(0)

    # 体质触发的事件
    elif strong < 6 and point != 3:
        info += '你生了一场病,'
        if home >= 5:
            info += '在父母的精心照料下恢复了健康'
            strong += 1
            home -= 1
        else:
            info += '你的父母没精力管你,你的身体状况更糟糕了'
            strong -= 1

    # 颜值触发的事件
    elif face < 4 and age >= 7:
        info += '你因为长的太丑,别的小朋友不喜欢你,'
        if iq > 5:
            info += '你决定用学习填充自己'
            iq += 1
        else:
            if gender == 'boy':
                info += '你和别的小朋友经常打架'
                iq -= 1
                strong += 1
            else:
                info += '你经常被别的小朋友欺负'
                strong -= 1

    # 智商触发的事件
    elif iq < 5:
        info += '你看起来傻傻的,'
        if home >= 8 and age >= 6:
            info += '你的父母给你送到更好的学校学习'
        elif 4 <= home <= 7:
            if gender == 'boy':
                info += '你的父母鼓励你多运动,加强身体素质'
                strong += 1
            else:
                info += '你的父母鼓励你多打扮自己'
                face += 1
        else:
            info += '你的父母为此经常吵架'
            if point == 1:
                strong -= 1
            elif point == 2:
                iq -= 1

    # 健康成长
    else:
        info += '你健康成长,'
        if point == 1:
            info += '看起来更聪明了'
            iq += 1
        elif point == 2:
            info += '看起来更好看了'
            face += 1
        else:
            info += '看起来更结实了'
            strong += 1

    print('------------------------------------------------')
    print(info)
    print(f'strong={strong}, face={face}, iq={iq}, home={home}')
    time.sleep(1)

更多的逻辑,此处就不再实现了.大家可以按照类似的方式,设计更多的事件,完成青年,壮年,老年 的相关逻辑.


4.5完整代码模拟实现

import random

print("====== 人生重开模拟器 ======")

while True:
    print("\n是否开始新人生?")
    print("1. 开始")
    print("2. 退出")

    choice = input("请输入你的选择:")

    if choice == "2":
        print("游戏结束,欢迎下次再来重开人生!")
        break

    elif choice != "1":
        print("输入有误,请重新输入。")
        continue

    print("\n正在随机生成你的初始属性...")

    beauty = random.randint(1, 100)
    intelligence = random.randint(1, 100)
    health = random.randint(1, 100)
    family = random.randint(1, 100)

    print("\n你的初始属性如下:")
    print("颜值:", beauty)
    print("智力:", intelligence)
    print("体质:", health)
    print("家境:", family)

    score = 0

    if beauty >= 80:
        print("你颜值出众,从小很受欢迎。")
        score += 20
    elif beauty >= 50:
        print("你的颜值普通,但看起来很顺眼。")
        score += 10
    else:
        print("你的颜值一般,但问题不大。")
        score += 5

    if intelligence >= 80:
        print("你天资聪明,学习能力很强。")
        score += 30
    elif intelligence >= 50:
        print("你的智力正常,努力就有收获。")
        score += 15
    else:
        print("你学习比较吃力,需要更加努力。")
        score += 5

    if health >= 80:
        print("你身体强壮,很少生病。")
        score += 20
    elif health >= 50:
        print("你的身体状况一般。")
        score += 10
    else:
        print("你的体质较弱,需要注意健康。")
        score -= 10

    if family >= 80:
        print("你出生在富裕家庭,起点很高。")
        score += 30
    elif family >= 50:
        print("你的家庭条件普通。")
        score += 10
    else:
        print("你的家庭条件较差,人生开局比较困难。")
        score -= 10

    print("\n====== 人生开始 ======")

    age = 0

    while age <= 80:
        if age == 0:
            print("0岁:你出生了。")

        elif age == 6:
            print("6岁:你开始上小学。")

        elif age == 18:
            print("18岁:你参加高考。")

            if intelligence >= 70:
                print("你考上了一所不错的大学。")
                score += 30
            else:
                print("你的高考成绩一般。")
                score += 5

        elif age == 25:
            print("25岁:你开始进入社会工作。")

            if intelligence + family >= 130:
                print("你找到了一份不错的工作。")
                score += 30
            else:
                print("你找工作比较艰难。")
                score += 5

        elif age == 35:
            print("35岁:你进入人生关键阶段。")

            if score >= 100:
                print("你的事业和生活都比较顺利。")
                score += 30
            else:
                print("你感受到了一些生活压力。")
                score += 5

        elif age == 50:
            print("50岁:你开始回顾自己的人生。")

            if health >= 60:
                print("你的身体还不错,生活稳定。")
                score += 20
            else:
                print("你的身体状况不太理想。")
                score -= 10

        elif age == 80:
            print("80岁:你的人生即将结束。")

        age += 1

    print("\n====== 人生总结 ======")
    print("你的最终人生评分是:", score)

    if score >= 150:
        print("评价:传奇人生!你这一生非常成功。")
    elif score >= 100:
        print("评价:优秀人生!整体过得不错。")
    elif score >= 60:
        print("评价:普通人生!有苦有甜。")
    else:
        print("评价:艰难人生!但你也努力活过。")

    print("\n本轮人生结束。")


🚀真正的勇者不是流泪的人,而是含泪奔跑的人!

敬请期待下一篇文章内容


每日心灵鸡汤: 困住你的,往往是你不敢面对的恐惧!

很多时候,人真正被困住的,不是现实本身,而是内心里那些不敢面对的恐惧.我们总以为生活的困难来自环境、运气、别人,甚至时代,可更深层的问题,往往是自己给自己设下了边界.害怕失败,于是不敢开始;害怕失去,于是始终停在原地;害怕被否定,于是不断压抑真正的想法.可那些被逃避的东西,并不会因为不看见就消失,它只会在未来,用更大的代价重新出现.一个人真正的成长,不是等外界变得容易,而是终于有勇气直视自己的恐惧,打破那些长期束缚自己的限制.当你敢跨过去时,才会发现,很多所谓"卡住"的人生,其实只是自己不愿迈出的那一步.

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2401_87629362/article/details/162687680

文章来源crawl

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--