循环语句——“Python”

各位CSDN的uu们你们好呀,今天小雅兰的内容是Python中的循环语句呀,分为while循环和for循环,下面,让我们进入循环语句的世界吧

 循环语句 

        while循环

        for循环

        continue和break

循环语句小结

人生重开模拟器

        设置初始属性

        设置性别

        设置出生点

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

循环语句

有些操作是需要反复执行的. 这种就需要使用循环.

 while 循环

while 条件:
   循环体
  • 条件为真, 则执行循环体代码.

  • 条件为假, 则结束循环.

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

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

循环语句——“Python”

循环语句——“Python”

 

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

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

循环语句——“Python”

代码示例 : 计算 5 的阶乘  

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

循环语句——“Python”

代码示例: 求 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)

循环语句——“Python”

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

for 循环

基本语法格式

for 循环变量 in 可迭代对象:
    循环体

注意:

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

代码示例: 打印 1-10

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

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

循环语句——“Python”

 

循环语句——“Python”

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

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

循环语句——“Python”

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

循环语句——“Python”

代码示例: 打印 10-1  

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

循环语句——“Python”

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

代码示例: 求 1 – 100 的和

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

循环语句——“Python”

循环语句——“Python” 

continue和break

  • continue 表示结束这次循环, 进入下次循环.
  • break 表示结束整个循环

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

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

循环语句——“Python”

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

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

循环语句——“Python”

 

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

sum = 0
#加和的结果
count = 0
#表示有几个数字
while True:
   num = input("请输入数字:")
   if num == ';':
     #约定当用户输入 ; 的时候,表示输入结束
     break
   num = float(num)
   sum += num
   count += 1
print(sum / count)

循环语句——“Python”

 

 循环语句小结

循环语句——“Python”

循环语句——“Python” 

 人生重开模拟器

这是一款之前很火的文字类小游戏. 玩家输入角色的初始属性之后, 就可以开启不同的人生经历.

 下面,我们来实现一个简化版本的“人生重开模拟器”

设置初始属性

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

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

我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20.

如果玩家输入的初始属性不合理, 就提示输入有误, 重新输入.

 欢迎界面

print("+---------------------------------------------------------------------+")
print("|                                                                     |")
print("|                          花有重开日, 人无再少年                         |")
print("|                                                                     |")
print("|                          欢迎来到, 人生重开模拟器                        |")
print("|                                                                     |")
print("+---------------------------------------------------------------------+")

循环语句——“Python”

 

 设置初始属性

 

# 设置初始属性
#颜值,体质,智力,家境总和不能超过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

循环语句——“Python”

循环语句——“Python” 

 

设置性别  

 设置性别

通过 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("你是个女孩")

 循环语句——“Python”

 循环语句——“Python”

循环语句——“Python” 

 设置出生点

设置出生点

首先按照家境(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}")

循环语句——“Python”

 循环语句——“Python”

 

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

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

  • 幼年阶段 [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)

循环语句——“Python”

循环语句——“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("你是个女孩")

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”

 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年3月16日
下一篇 2023年3月17日

相关推荐