【python】控制流程 :条件和循环语句

目录

一、条件语句

1.2 空语句(pass语句)

二、循环语句

2.1 while 循环

2.2  for 循环

2.3循环嵌套

2.4 循环控制语句

三、小游戏(人生重开简化版)


一、条件语句

input输入为字符串类型,进行算数运算时,需注意进行类型转换,如:

a = int(input("请输入一个整数:"))

在 Python 中,值可以分为:

  • 假值 :None、空列表、空集合、空字典,空元组、空字符串、0、False 等

  • 真值 :非空列表、非空集合、非空字典,非空元组、非空字符串、非 0 数值、True 等

(1)条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。指定任何非0和非空(null)值为true,0 或者 null为false。 编程中 if 语句用于控制程序的执行,基本形式为:

if 判断条件:
    执行语句……
else:
    执行语句……

(2)"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。

flag = False
name = 'luren'
if name == 'python':         # 判断变量是否为 python 
    flag = True              # 条件成立时设置标志为真
    print('welcome boss')     # 并输出欢迎信息
else:
    print(name)               # 条件不成立时输出变量名称

(3) python 不支持 switch 语句,所以多个条件判断,只能用 elif 来实现;

num = 5     
if num == 3:            # 判断num的值
    print('boss')        
elif num == 2:
    print ('user')
elif num == 1:
    print ('worker')
elif num < 0:           # 值小于零时输出
    print ('error')
else:
    print ('roadman')     # 条件均不成立时输出

(4)如多个条件需同时判断时,可以使用 or (或):表示两个条件有一个成立时判断条件成功; and (与):表示只有两个条件同时成立的情况下,判断条件才成功。

num = 9
if num >= 0 and num <= 10:    # 判断值是否在0~10之间
    print('hello') # 输出结果: hello

num = 10
if num < 0 or num > 10:    # 判断值是否在小于0或大于10
    print('hello')
else:
    print('undefine')  # 输出结果: undefine
 
num = 8
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):      # 判断值是否在0~5或者10~15之间
    print('hello')
else:
    print('undefine')    # 输出结果: undefine

(5)当 if 有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行, and 和 or 的优先级低于>(大于)、<(小于)等判断符号(即大于和小于在没有括号的情况下会比and、or要优先判断)

(6)也可在同一行的位置上使用if条件判断语句:

var = 100 
if ( var  == 100 ) : print "变量 var 的值为100" 
print("Good bye!")

判断闰年(四年闰一次,能被100整除的为世纪闰年):

(1)每四百年再一闰:如果year能够被400整除,则year是世纪闰年。

(2)四年一闰百年不闰:即如果year能够被4整除,但是不能被100整除,则year是闰年。

year = int(input("请输入一个年份:"))
if year % 400 == 0:
    print("世纪闰年")
else:
    if year % 4 == 0:
        print("闰年")
    else:
        print("平年")

1.2 空语句(pass语句)

Python 中  pass 是空语句,是为了保持程序结构的完整性。pass 一般用做占位语句。

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

二、循环语句

(1)Python 提供了 for 循环和 while 循环( Python 中没有 do..while 循环)

a6a56535cc704e9b89d0280537c8d645.png

2.1 while 循环

(1)执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。当判断条件假 false 时,循环结束。若无循环更新语句,会造成死循环(循环的三要素:循环变量初始值、循环条件、循环变量的更新值)

num = 1  #循环变量初始值
while(num <= 10):  #循环条件
    print(num)
    num = num + 1  #循环更新条件
    

(2)如果条件判断语句永远为 true,循环将会无限的执行下去(无限循环、死循环)

注意!!!无限循环可使用 CTRL+C 来中断循环。

var = 1
while var == 1 :  # 该条件永远为true,循环将无限执行下去
   num = raw_input("Enter a number  :")
   print("You entered: ", num)
 
print( "Good bye!")

(3)循环使用 else 语句:while … else 在循环条件为 false 时执行 else 语句块:

count = 0
while count < 5:
   print(count, " is  less than 5")
   count = count + 1
else:
   print(count, " is not less than 5")

(4)如果 while 循环体中只有一条语句,可以将该语句与while写在同一行中:此处没有循环变量的更新值,故为死循环:

flag = 1
while (flag): print('Given flag is really true!')
print("Good bye!")

2.2  for 循环

(1)for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

可迭代对象内部包含许多值,可通过循环每次取出它内部包含的一个元素

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

range(start,end,step):内建函数,前闭后开区间,step表示步长

for i in range(1,6):
    print(i)  #输出12345
for i in range(1,6,2):
    print(i)  #输出135
for i in range(10,0,-1):
    print(i)   #输出10 987654321

thesum = 0
for i in range(1,10,2):
    thesum += i
print(f'sum = {thesum}')  #25

求和计算:

thesum = 0
for i in range(1,10,2):
    thesum += i
print(f'sum = {thesum}')  #25

num = 1
while i <= 100 :
    num += i
    i = i +1
print(f'num = {num}')

计算阶乘:


result = 1
num = 1
while num <= 5:
    result *= num
    num = num + 1
print(f'result = {result}')
    

计算阶乘的和:

num = 1
sum = 0
#先计算num!, 再计算求和
while num <= 5:
    ret = 1  #num的阶乘
    i = 1
    while i <= num:
        ret *= i
        i +=1     
    sum += ret
    num += 1
print(f'sum = {sum}')
for letter in 'Python':     # 在python字符串进行遍历
   print("当前字母: %s" % letter)   #打印输出 每个字符串
 
fruits = ['banana', 'apple',  'mango']
for fruit in fruits:        # 第二个实例
   print ('当前水果: %s'% fruit)  #输出 
 
print ("Good bye!")

(2)通过序列索引迭代

通过索引遍历循环,使用了内置函数 len() 和 range(),函数 len() :返回列表的长度(元素个数); range :返回一个序列的数。

fruits = ['banana', 'apple',  'mango']
for index in range(len(fruits)):
   print ('当前水果 : %s' % fruits[index])
 
print ("Good bye!")

(3)在 python 中,for … else 表示:else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。

for num in range(10,20):  # 迭代 10 到 20 之间的数字
   for i in range(2,num): # 根据因子迭代
      if num%i == 0:      # 确定第一个因子
         j=num/i          # 计算第二个因子
         print ('%d 等于 %d * %d' % (num,i,j))
         break            # 跳出当前循环
   else:                  # 循环的 else 部分
      print ('%d 是一个质数' % num)

2.3循环嵌套

在循环体内嵌入其他的循环体,如在while循环中可以嵌入for循环, 反之,你可以在for循环中嵌入while循环。

i = 2
while(i < 100):
   j = 2
   while(j <= (i/j)):
      if not(i%j): break    #满足not(i%j)为真 ,(即括号内为false(余数为0),您加上not则为true,则执行break)则退出本次循环
      j = j + 1
   if (j > i/j) : print i, " 是素数"
   i = i + 1
 
print ("Good bye!")

2.4 循环控制语句

循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:

continue:立即结束当前本次循环,进入下次循环

break:立即结束整循环

 (1)break语句

break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。break语句用在while和for循环中。使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。

for letter in 'Python':     # 第一个实例
   if letter == 'h':
      break 
   print('当前字母 :', letter)   #输出 P y  t
  
var = 10                    # 第二个实例
while var > 0:              
   print('当前变量值 :', var) 
   var = var -1
   if var == 5:   # 当变量 var 等于 5 时退出循环
      break
 
print("Good bye!") 

求多个输入数字的平均值:

#求输入几个数的平均值
sum = 0
avg = 0
count = 0
while True:
    num = input("请输入一个数字(分号表示结束):")
    if num == ';':
        break   #退出循环
    num = float(num)
    sum += num
    count += 1
avg = sum / count
print(f'平均值为:{avg}')

(2)continue语句

continue 跳过当前循环的剩余语句,然后继续进行下一轮循环。continue语句用在while和for循环中。

continue 语句是一个删除的效果,他的存在是为了删除满足循环条件下的某些不需要的成分(如下代码即表明删除h元素)

1)continue 语句跳出本次循环而break跳出整个循环

for i in range(1,16):
    if i == 13:
        continue
    print(i,end = ' ')   #end代表输出的数据之间以空格分割
for letter in 'Python':     # 第一个实例
   if letter == 'h':
      continue
   print ('当前字母 :', letter)
 
var = 10                    # 第二个实例
while var > 0:              
   var = var -1
   if var == 5:
      continue
   print ('当前变量值 :', var)
print ("Good bye!")

f6a70c51aaca431499e53e7380b58b72.png             fe44bdd2176f4e37bb0a0de502d0b9d4.png

 若只打印0-10之间的奇数,可以用continue语句跳过某些循环:

n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0:      # 如果n是偶数,执行continue语句
        continue        # continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)

 (1)打印一个二维列表(将每个数字扩大几倍)

n = int(input())
matrix_list = [[1,2,3],[4,5,6],[7,8,9]]

for i in range(len(matrix_list)):  #ij指的是下标
    for j in range(len(matrix_list[i])):
        matrix_list[i][j] = n*matrix_list[i][j]
# matrix_list1 =[ [i *n for i in matrix_list[0]],[i *n for i in matrix_list[1]],[i *n for i in matrix_list[2]]]

print(matrix_list)


三、小游戏(人生重开简化版)

(1)制作一个欢迎界面

#人生重开小游戏简化版
'''
1.设置初始属性:颜值、体质、智力、家境
2.开始游戏,随机生成性别、出生地点
3.针对每一年,生成人生经历~ ~ (依靠随机因素 + 角色属性)
'''

print('+-------------------------------------+')
print('|                                     |')
print('|                                     |')
print('|                                     |')
print('|-------欢迎来到小河鱼的游戏间--------|')
print('|                                     |')
print('|                                     |')
print('|                                     |')
print('+-------------------------------------+')

(2)设置初始属性

颜值、体质、智力、家境,总和不超过20,每一项取值范围是1-10之间,并判断各个数据是否符合输入需求

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

    if face < 1 or face > 10:   #通过条件语句判断输入的条件是否有误
        print('请重新输入颜值数据')
        continue      #退出本次循环,进入下一次循环(重新输入数据)
    if strong < 1 or face > 10:  
        print('请重新输入体质数据')
        continue      
    if iq < 1 or face > 10:   
        print('请重新输入智力数据')
        continue      
    if home < 1 or face > 10:  
        print('请重新输入家境数据')
        continue   
    
    if face + strong + iq + home  > 20:
        print('总和属性超出了20,请重新输入各项数据')
        continue
    
    ##如果上述循环未被触发,则说明用户输入数据正确,,此时跳出循环,进入下一阶段
    print('输入属性输入完毕!')
    print(f'颜值:{face}, 体质:{strong}, 智力:{iq}, 家境:{home}')
    break
           

(3)生成随机性别 

#(3)生成随机性别 
##使用random.randint(start,end),生成随机整数   random是一个随机模块

point = random.randint(1,9)    #随机数的生成
print(f'point:{point}')
if point % 2 == 1:
    gender = 'boy'
    print('你是一个男孩')
else:
    gender = 'girl'
    print('你是一个女孩')      

(4)设置出生点(根据家境+随机数确定)

家境10:第一档,带来一些属性加成

家境7-9:第二档,也会有一些属性加成

家境4-6:第三档:少数属性加成

家境1-3:第四档:扣属性

#(4)设置出生点(根据家境+随机数确定)
#
point = random.randint(1,5)
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('你出生在大城市,父母是大学教授')
        face += 1
        
elif 4 <= home <= 6:
    if point == 1:
        print('你出生在三线城市,父母是医生')
        strong += 1  
    elif point == 2:
        print('你出生在镇上,父母是老师')
        iq += 2
    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}')

(5)设置各年龄段,针对每一个年龄设置一个随机数

      
#幼年阶段
for age in range(1,11):
    #把一整年的打印整理到一个字符串中,再这一奶奶的结尾统一打印
    info = f'你今年{age}岁,'
    #生成一个1-3的随机数
    point = random.randint(1,3)
    #接下来写各种事件的代码
    
    
    # 1)性别触发事件
    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
    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   

(6)智商触发事件  

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:
            info += '家人经常吵架'
            if point == 1:
                strong -= 1
            elif point == 2:
                iq -= 1
            else:
                pass

(7)健康成长

# 3)健康成长 ,不触发上述事件            
    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)

整体代码:

#人生重开小游戏简化版
'''
1.设置初始属性:颜值、体质、智力、家境
2.开始游戏,随机生成性别、出生地点
3.针对每一年,生成人生经历~ ~ (依靠随机因素 + 角色属性)
'''

import random
import sys
import time


print('+-------------------------------------+')
print('|                                     |')
print('|                                     |')
print('|                                     |')
print('|-------欢迎来到小河鱼的游戏间--------|')
print('|                                     |')
print('|                                     |')
print('|                                     |')
print('+-------------------------------------+')

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

    if face < 1 or face > 10:   #通过条件语句判断输入的条件是否有误
        print('请重新输入颜值数据')
        continue      #退出本次循环,进入下一次循环(重新输入数据)
    if strong < 1 or face > 10:  
        print('请重新输入体质数据')
        continue      
    if iq < 1 or face > 10:   
        print('请重新输入智力数据')
        continue      
    if home < 1 or face > 10:  
        print('请重新输入家境数据')
        continue   
    
    if face + strong + iq + home  > 20:
        print('总和属性超出了20,请重新输入各项数据')
        continue
    
    ##如果上述循环未被触发,则说明用户输入数据正确,,此时跳出循环,进入下一阶段
    print('输入属性输入完毕!')
    print(f'颜值:{face}, 体质:{strong}, 智力:{iq}, 家境:{home}')
    break



#(3)生成随机性别 
##使用random.randint(start,end),生成随机整数   random是一个随机模块

point = random.randint(1,9)    #随机数的生成
print(f'point:{point}')
if point % 2 == 1:
    gender = 'boy'
    print('你是一个男孩')
else:
    gender = 'girl'
    print('你是一个女孩')           

#(4)设置出生点(根据家境+随机数确定)
#
point = random.randint(1,5)
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('你出生在大城市,父母是大学教授')
        face += 1
        
elif 4 <= home <= 6:
    if point == 1:
        print('你出生在三线城市,父母是医生')
        strong += 1  
    elif point == 2:
        print('你出生在镇上,父母是老师')
        iq += 2
    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}')



#(4)设置各年龄段,针对每一个年龄设置一个随机数
      
#幼年阶段
for age in range(1,11):
    #把一整年的打印整理到一个字符串中,再这一奶奶的结尾统一打印
    info = f'你今年{age}岁,'
    #生成一个1-3的随机数
    point = random.randint(1,3)
    #接下来写各种事件的代码
    
    
    # 1)性别触发事件
    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
    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   
                
                
 # 2)智商触发事件  
    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:
            info += '家人经常吵架'
            if point == 1:
                strong -= 1
            elif point == 2:
                iq -= 1
            else:
                pass
            
# 3)健康成长 ,不触发上述事件            
    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)
    
            
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值