前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python流程控制语句详细解读 含代码

Python流程控制语句详细解读 含代码

作者头像
小土豆Yuki
发布2020-06-15 17:37:04
9660
发布2020-06-15 17:37:04
举报
文章被收录于专栏:洁癖是一只狗洁癖是一只狗

今天我们详细的讲讲Python流程控制语句。包括if条件判断,while循环以及break和continue等。下一篇我们主讲Python中的序列,包括列表、元组、字典、集合等。关注公众号,实时获取最新动态。

如果喜欢这篇文章,就点下文末的"在看"吧!

1. 条件判断语句

1). if 语句

  • 语法:if 条件表达式 :

代码块

  • 执行的流程:if语句在执行时,会先对条件表达式进行求值判断,

如果为True,则执行if后的语句

如果为False,则不执行

默认情况下,if语句只会控制紧随其后的那条语句,如果希望if可以控制多条语句,

则可以在if后跟着一个代码块

  • 代码块

代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行

代码块就是一种为代码分组的机制

如果要编写代码块,语句就不能紧随在:后边,而是要写在下一行

代码块以缩进开始,直到代码恢复到之前的缩进级别时结束

缩进有两种方式,一种是使用tab键,一种是使用空格

Python的官方文档中推荐我们使用空格来缩进

  • Python代码中使用的缩进方式必须统一

可以使用逻辑运算符来连接多个条件

如果希望所有条件同时满足,则需要使用and

如果希望只要有一个条件满足即可,则需要使用or

代码语言:javascript
复制
num = 

if num >  and num <  :
    print('num比10大, num比20小!')
#或是
if  < num < :
    print('num比10大, num比20小!'运行结果:

简单应用举例:

在命令行让用户输入一个用户名,获取用户输入,并进行判断

如果用户输入的用户名是admin,则显示欢迎管理员光临

如果用户输入的是其他的用户名,则什么也不做

代码语言:javascript
复制
#获取用户输入的用户名
username = input('Please input your name:')
#判断用户是否是admin
if username == 'admin' :
    print('Welcome admin user!')

运行结果:

正好上述代码用到了input函数,那么我们就说说input函数。

  • input()函数

该函数用来获取用户的输入

input()调用后,程序会立即暂停,等待用户输入

用户输入完内容以后,点击回车程序才会继续向下执行

用户输入完成以后,其所输入的的内容会以返回值的形式返回

注意:input()的返回值是一个字符串

input()函数中可以设置一个字符串作为参数,这个字符串将会作为提示文字显示

代码语言:javascript
复制
a = input('请输入任意内容:')
print('用户输入的内容是:',a)运行结果:

input()也可以用于暂时阻止程序结束

2). if-else语句

  • 语法:

if 条件表达式 :

代码块

else :

代码块

  • 执行流程:

if-else语句在执行时,先对if后的条件表达式进行求值判断

如果为True,则执行if后的代码块

如果为False,则执行else后的代码块

代码语言:javascript
复制
age = int(input('请输入你的年龄:'))
if age >  :
    print('你已经成年了~~')
else :
    print('你还未成年~~')

运行结果:

3). if-elif-else语句

  • 语法:

if 条件表达式 :

代码块

elif 条件表达式 :

代码块

elif 条件表达式 :

代码块

else :

代码块

  • 执行流程:

if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,

如果表达式的结果为True,则执行当前代码块,然后语句结束

如果表达式的结果为False,则继续向下判断,直到找到True为止

如果所有的表达式都是False,则执行else后的代码块

注意:if-elif-else中只会有一个代码块会执行

代码语言:javascript
复制
age = int(input('请输入你的年龄:'))
if age >  and age <  :
    print("你还未成年!")
elif age >=  and age <  :
    print('你已经成年了!')
elif age >=  and age <  :
    print('你已经中年了!')
elif age >=  :
    print('你已经退休了!')
else :
    print('你的输入有误,请重新输入!')

运行结果:

If 语句练习:

练习1:编写一个程序,获取一个用户输入的整数。然后通过程序显示这个数是奇数还是偶数。

代码语言:javascript
复制
#获取用户输入的整数
num = int(input('请输入一个任意的整数:'))
#判断并显示num是奇数还是偶数
if num %  ==  :
    print(num , "是偶数") #判断是否可以被整除,如果可以整除,那么这个数就是偶数
else :
    print(num , '是奇数')运行结果:

练习2:编写一个程序,检查任意一个年份是否是闰年。

代码语言:javascript
复制
#如果一个年份可以被4整除不能被100整除,或者可以被400整除,这个年份就是闰年
year = int(input('请输入一个任意的年份:'))
#检查这个年份是否是闰年
if year %  ==  and year %  !=  or year %  ==  :
    print(year,'是闰年')
else :
    print(year,'是平年')

运行结果:

练习3:

我家的狗5岁了,5岁的狗相当于多大年龄的人呢?

其实非常简单,狗的前两年每一年相当于人类的10.5岁,然后每增加一年就增加四岁。

那么5岁的狗相等于人类的年龄就应该是10.5+10.5+4+4+4 = 33岁

编写一个程序,获取用户输入的狗的年龄,然后通过程序显示其相当于人类的年龄。

如果用户输入负数,请显示一个提示信息

代码语言:javascript
复制
dog_age = float(input('请输入狗的年龄:'))
if dog_age < 0 :
    print('你的输入不合法!')
#如果狗的年龄在两岁以下(包含两岁)
#直接将当前的年龄乘以10.5
elif dog_age <= 2 :
    like_person_age = dog_age * 10.5
#如果狗的年龄在两岁以上

else :
    #计算前两岁相当于人类的年纪
    like_person_age = 2 * 10.5
    #计算超过两岁的部分相对于人类的年纪,并进行相加
    like_person_age += ( dog_age - 2 ) * 4

if dog_age > 0 :
    print(dog_age,'岁的狗,年纪相当于',like_person_age,'岁的人')

运行结果:

在if也可以去嵌套if,代码块是可以嵌套的每增加一个缩进的级别,代码块就低一级

所以上面代码让我们嵌套if 看看怎么写:(可实现和上一个代码一样的功能)

代码语言:javascript
复制
dog_age = float(input('请输入狗的年龄:'))
#外层if嵌套检查用户的输入是否合法
if dog_age > 0 :
    #如果狗的年龄在两岁以下(包含两岁)
    if dog_age <= 2:
        #直接将当前的年龄乘以10.5
        like_person_age= dog_age * 10.5
    #如果狗的年龄在两岁以上
    else :
       #计算前两岁相当于人类的年纪
       like_person_age = 2 * 10.5
       #计算超过两岁的部分相对于人类的年纪,并进行相加
       like_person_age += ( dog_age - 2 ) * 4
    print(dog_age,'岁的狗,年纪相当于',like_person_age,'岁的人')
else :
    print('请输入一个合法的年龄!')

练习4:

从键盘输入小明的期末成绩:

当成绩为100时,'奖励一辆BMW'

当成绩为[80-99]时,'奖励一台iphone'

当成绩为[60-79]时,'奖励一本参考书'

其他时,什么奖励也没有

代码语言:javascript
复制
#获取小明的成绩
score = float(input('请输入你的期末成绩(0-100):'))

#打印分割线
print("="*40)

#检查用户的输入是否合法
if 0 <= score <= 100 :
    #判断发给的奖励是什么
    if score == 100 :
        print('宝马,拿去玩!')
    elif score >=80 :
        print('苹果手机,拿去玩!')
    elif score >=60 :
        print('参考书,拿去玩!')
    else :
        print('棍子一根!')
else :
    #用户输入的不合法,弹出一个友好提示
    print('你输入的内容不合法,请重新输入!')

运行结果:

2. 循环语句

1).while 循环

循环语句可以使指定的代码块重复指定的次数

循环语句分成两种,while循环和 for循环

今天我们来讲讲while循环

while循环

  • 语法:

while 条件表达式 :

代码块

else :

代码块

  • 执行流程:

while语句在执行时,会先对while后的条件表达式进行求值判断,

如果判断结果为True,则执行循环体(代码块),

循环体执行完毕,继续对条件表达式进行求值判断,以此类推,

直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块

条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用!

代码语言:javascript
复制
####死循环, 慎用!!!
while True :
    print('hello')
  • 循环的三个要件(表达式):

1). 初始化表达式,通过初始化表达式初始化一个变量

i = 0

2). 条件表达式,条件表达式用来设置循环执行的条件

while i < 10 :

print(i)

3). 更新表达式,修改初始化变量的值

i += 1

代码语言:javascript
复制
#创建一个执行十次的循环
i = 0
while i < 10 :
    i += 1
    print(i,'hello')
else :
    print('else中的代码块')运行结果:

while循环练习

练习1. 求100以内的所有的奇数之和

代码语言:javascript
复制
i = 0
sum = 0
while i < 100 :
    i += 1
    if i % 2 == 1 :
        sum += i
print('100以内的所有奇数之和为',sum)

运行结果:

练习2.水仙花数是指一个n位数(n≥3),它的每个位上的数字的 n 次幂之和等于它本身(例如:1**3 + 5**3 + 3**3 = 153)。 求1000以内所有的水仙花数

代码语言:javascript
复制
# 获取1000以内的三位数
i = 
while i < :

    # 假设,i的百位数是a,十位数b,个位数c
    # 求i的百位数
    a = i // 100
    # 求i的十位数
    b = (i - a * ) // 10
    # 求i的个位数字
    c = i % 
    # 判断i是否是水仙花数
    if a** + b** + c** == i :
        print(i)
    i += 

运行结果:

练习3. 获取用户输入的任意数,判断其是否是质数。

代码语言:javascript
复制
# 判断number是否是质数,只能被1和它自身整除的数就是质数
number = int(input('输入一个任意的大于1的整数:'))

# 判断number是否是质数,只能被1和它自身整除的数就是质数
# 获取到所有的可能整除number的整数
i = 
# 创建一个变量,用来记录num是否是质数,默认认为num是质数
flag = True
while i < number:
    # 判断number能否被i整除
    # 如果number能被i整除,则说明number一定不是质数
    if number % i ==  :
        # 一旦进入判断,则证明number不是质数,则需要将flag修改为false
        flag = False
    i += 

if flag :
    print(number,'是质数')
else :
    print(number,'不是质数')运行结果:

2). while循环嵌套

循环嵌套时,外层循环每执行一次,内存循环就要执行一圈

while 嵌套练习

练习1.在控制台中打印如下图形

**********

**********

**********

**********

**********

创建一个循环来控制图形的高度

代码语言:javascript
复制
i = 0
while i < 5:
    #创建一个内层循环来控制图形的宽度
    j = 0
    while j < 10:
        print("*",end='')
        j += 1
    print()
    i += 1

运行结果:

练习2.打印99乘法表

代码语言:javascript
复制
#   打印99乘法表
#   1*1=1
#   1*2=2 2*2=4
#   1*3=3 2*3=6 3*3=9
#   ...                 9*9=81

# 创建一个外层循环来控制图形的高度
i = 
while i < :
    i += 

    # 创建一个内层循环来控制图形的宽度
    j = 
    while j < i:
        j += 
        print(f"{j}*{i}={i*j} ",end="")

    print()

运行结果:

3. break 和 continue

  • break可以用来立即退出整个循环语句(包括else)
  • continue可以用来跳过当次循环
  • break和continue都是只对离他最近的循环起作用
  • 补充:pass是用来在判断或循环语句中占位的

break举例:(当变量为4时 终止整个循环,所以只打印出了1 2 3)

代码语言:javascript
复制
# 创建一个5次的循环
i = 0
while i < 5 :
    i += 1
    if i == 4 :
        break
    print(i)
else :
    print('循环结束')

运行结果:

continue 举例:(当变量为4时跳过当次循环,所以只打印出了1 2 3 5)

代码语言:javascript
复制
# 创建一个5次的循环
i = 0
while i < 5 :
    i += 1
    if i == 4 :
        continue
    print(i)
else :
    print('循环结束')

运行结果:

讲了这么多,相信你已经对python的控制流语句有了大致的了解,让我们用之前所学到的知识试着写一个稍微复杂点的程序吧。

程序内容:唐僧大战白骨精

你将以唐僧的身份进行游戏,唐僧的初始生命值是2,攻击力是2。

然后请你选择如下操作:

1. 练级 ,每练级1次,生命值增加2,攻击力增加2

2. 打Boss 也就是打白骨精 白骨精的初始生命值是10,攻击力是10

3. 逃跑 若选择逃跑,游戏直接结束

如果选择2,也就是打白骨精,若一次没有打死,则白骨精会反击唐僧!

代码:

代码语言:javascript
复制
##唐僧大战白骨精
#1  身份选择
#2. 游戏进行

print('='*+'欢迎来到游戏<<唐僧大战白骨精>>'+'清选择你的身份:'+'='*,end='')
print('''
请选择你的身份: 
      1. 唐僧
      2. 白骨精
    ''')
person = input('请选择(1-2):')
print('-'*)
player_life =  #player生命值
player_attack =  #player攻击力
boss_life =  #boss生命值
boss_attack =  #boss攻击力
if person == '1' :
    print('你已经选择了1,你将以->唐僧<-的身份进行游戏!')
    print('-'*)
    print(f'唐僧,你的生命值是{player_life},你的攻击力是{player_attack}')
    print('-'*)
    while True :
        print('''请选择你要的操作(1-3):
              1. 练级
              2. 打BOSS
              3. 逃跑
        ''')
        operation = input('请选择你要进行的操作:')
        if operation == '1' :
            player_life += 
            player_attack += 
            print(f'恭喜你!->唐僧<-你升级了。 你现在生命值是:{player_life} 攻击力是:{player_attack}')
        elif operation == '2' :
            ##玩家要攻击boss,减去boss生命值,减去的是玩家的生命值
            boss_life -= player_attack
            print('->唐僧<-攻击->白骨精<-')
            ##检查boss是否死亡
            if boss_life <=  :
                print(f'白白骨精受到了{player_attack}点伤害,重伤不治死了,->唐僧<-胜利')
                #游戏结束
                break
            ##boss反击玩家
            player_life -= boss_attack
            print('->白骨精<-反击->唐僧<-')
            if player_life <=  :
                print(f'->唐僧<-受到{boss_attack}点伤害,游戏结束!')
                break
        elif operation == '3' :
            print('->唐僧一扭头<-,撒腿就跑,Game Over')
            break
        else :
            print('你的输入有误,请重新输入!')
elif person == '2' :
    print('你竟然选择了白骨精,太不要脸了,系统将自动分配身份')
else :
    print('你的输入有误,系统将自动分配身份,你将以->唐僧<-的身份来进行游戏!')

试试执行上面的代码会出出现什么结果吧!

练级:

打Boss:

结果1 :唐僧胜利,游戏结束!

结果2 :唐僧打白骨精一次没有打死,白骨精反击唐僧,唐僧受到伤害,游戏结束!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洁癖是一只狗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档