循环语句——“Python”
Posted 认真学习的小雅兰.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环语句——“Python”相关的知识,希望对你有一定的参考价值。
各位CSDN的uu们你们好呀,今天小雅兰的内容是Python中的循环语句呀,分为while循环和for循环,下面,让我们进入循环语句的世界吧
循环语句
while循环
for循环
continue和break
循环语句小结
人生重开模拟器
设置初始属性
设置性别
设置出生点
针对每一岁, 生成人生经历
循环语句
有些操作是需要反复执行的. 这种就需要使用循环.
while 循环
while 条件: 循环体
条件为真, 则执行循环体代码.
条件为假, 则结束循环.
代码示例: 打印 1-10 的整数
num=1 while num<=10: print(num) 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)
这个程序用到了两重循环,也就是在循环语句中也可以套循环.
for 循环
基本语法格式
for 循环变量 in 可迭代对象: 循环体
注意:
- python 的 for 和其他语言不同, 没有 "初始化语句", "循环条件判定语句", "循环变量更新语句", 而是更加简单
- 所谓的 "可迭代对象", 指的是 "内部包含多个元素, 能一个一个把元素取出来的特殊变量"
代码示例: 打印 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 的和
theSum = 0 for i in range(1, 101): theSum += i print(theSum)
continue和break
- continue 表示结束这次循环, 进入下次循环.
- break 表示结束整个循环
代码示例: 模拟吃包子. 吃第 3 个包子的时候吃出了一只虫.
for i in range(1, 6): if i == 3: continue print(f"吃完第 i 个包子")
代码示例: 模拟吃包子. 吃第 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)
循环语句小结
人生重开模拟器
这是一款之前很火的文字类小游戏. 玩家输入角色的初始属性之后, 就可以开启不同的人生经历.
下面,我们来实现一个简化版本的“人生重开模拟器”
设置初始属性
在游戏中我们设定四个属性.
- 颜值 (face)
- 体质 (strong)
- 智力 (iq)
- 家境 (home)
我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20.
如果玩家输入的初始属性不合理, 就提示输入有误, 重新输入.
欢迎界面
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(1, 6) 生成一个 [1, 6] 的随机整数, 类似于掷色子.
- 如果是单数, 则性别设为男孩
- 如果是双数, 则性别设为女孩.
男孩和女孩会遇到不同的事件.
#生成角色的性别 #使用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("你是个女孩")
设置出生点
设置出生点
首先按照家境(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 print(f"颜值:face,体质:strong,智力:iq,家境:home")
针对每一岁, 生成人生经历
按照年龄, 把人生经历分成四个阶段:
- 幼年阶段 [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(info) print(f'strong=strong, face=face, iq=iq, home=home') print("-----------------------------------------------------") time.sleep(1)
这个简单的版本的源码
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("你是个女孩")
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
print(f"颜值:face,体质:strong,智力:iq,家境:home")
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(info)
print(f'strong=strong, face=face, iq=iq, home=home')
print("-----------------------------------------------------")
time.sleep(1)
好啦,小雅兰今天的内容就到这里啦,继续加油噢!!!
教程丨Python循环语句
本章节将向大家介绍Python的循环语句,程序在一般情况下是按顺序执行的。
编程语言提供了各种控制结构,允许更复杂的执行路径。
循环语句允许我们执行一个语句或语句组多次,下面是在大多数编程语言中的循环语句的一般形式:
Python提供了for循环和while循环(在Python中没有do..while循环):
循环控制语句
循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:
如果对于学习编程有很多疑惑,没有思路,不知道如何有效率的学习,可以添加我的vx13207483654,需要最新系统的学习教程也可以管我要。做了很多年开发,对于学习方式,如何提高自己的技术有一定的经验,术业有专攻,多跟有经验的人交流学习,对这个行业信息了解的多,职业发展的空间就越大。
以上是关于循环语句——“Python”的主要内容,如果未能解决你的问题,请参考以下文章