5、python条件控制语句——旺仔


python:条件控制语句

  • 1、input语句
  • 2、if语句
    • 2.1、if简介
    • 2.2、if-elif-else
    • 2.3、 if-elif-elif
  • 3、while循环
    • 3.1、while简介
    • 3.2、while循环的三大要素
    • 3.3、while语法
    • 3.4、while循环嵌套
    • 3.4、退出循环
      • 3.4.1 break用法
      • 3.4.2 continue用法
      • 3.4.2 无限循环
  • 4、对运算符优先级的补充
  • 5、课后作业
    • 1、打印乘法口诀表
    • 2、求1000以内所有的水仙花数
    • 3、获取用户输入的任意数,判断其是否是质数?
    • 4、猜拳游戏
    • 5、附加(个人练习)
    • 旺仔心得:

5、python条件控制语句——旺仔
文章图片

1、input语句
input简介:
input()方法暂停程序等待用户输入,获取输入并赋给一个变量。
input接受的参数都是字符串
input会阻塞后面的程序
  • 实际运用:
a = input('请输入:') print('您输入的值为:{}'.format(a))

  • 运行结果:
首先会出现:
5、python条件控制语句——旺仔
文章图片

然后输入值,‘i love python’,得到:
5、python条件控制语句——旺仔
文章图片

  • 需注意:
【5、python条件控制语句——旺仔】? input输入的值都是字符串,因为python是一种强文本语言,不像php之类的语言在使用运算符比较时可以强制转换类型,再进行比较,所以若想要得到其他类型的值,则需要使用例如int()eval()之类函数进行转换。
  • 例如如下代码:
a = input('请输入一个数值:') print(type(a)) if a == 1: print('123') else: print('abc')

  • 运行结果会如下,字符串‘1’与数值1直接比较,不会像php中一样直接强行转换后比较得到True
    5、python条件控制语句——旺仔
    文章图片
2、if语句 2.1、if简介
  • if 判断语句的基本语法:
    if 要判断的条件: 条件成立时,要做的事情
  • 注意:
    ? 代码的缩进为一个 tab 键,或者四个空格(pycharm 自动帮我们增加) 在 python 开发中,Tab 和空格不要混用,这里一定要注意tab的使用,很多初学者都会再这里犯错,然后找到问题,然后报错,像这样:IndentationError: unindent does not match any outer indentation level缩进错误:未缩进与任何外部缩进级别都不匹配,还有一定一定不要忘记加上 :,不加也会报错的。
2.2、if-elif-else
  • 语法如下:
if 判断条件1: pass elif 判断条件2: pass else: pass

  • 特点:
    永远会执行且只有一个输出
2.3、 if-elif-elif
  • 语法如下:
if 判断条件1: pass elif 判断条件2: pass elif 判断条件3: pass

  • 特点:
    不一定会执行,但是一旦执行,就只会有一个输出
3、while循环 3.1、while简介
  • while在英语中的解释是:当…时候。
  • Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。
3.2、while循环的三大要素
  • 初始值
  • 对于初始值的判断
  • 初始值的自增长
3.3、while语法
  • 当表达式为True的时候,程序会一直执行循环体代码,直至表达式为False。
while 表达式: 循环体

  • while实际运用
i = 1 while i <= 10: print(i) i+=1

演示效果:
5、python条件控制语句——旺仔
文章图片

3.4、while循环嵌套
? 外层循环的初始值要放到外层循环外,内层循环的初始值一定要放到外层循环之内、内层循环之外,否则内层循环的初始值不会重新被赋值,就没法控制内层循环的循环次数
实际运用:
# 乘法口诀打印,详情请看课后作业题1, i = 1 while i < 10: j = 1 while j <= i: m = i * j print(f'{i}x{j}={m}',end='') j += 1 print() i += 1

3.4、退出循环
为什么要退出循环,这是很多人第一的想法,这里我们需要了解一个知识——死循环。永远停不下来的循环,叫做死循环。
死循环的标准格式:while True:循环体
? 可以简单的这样理解:for循环主要用于那些我们知道循环次数的循环,而while循环主要用于那些我们不知道具体循环多少次的循环,但是因为有些时候,我们根本不知道循环要何时结束,所以只能使用while
? 当然,有些循环用for和while都可以实现。
? 其实,你经常用到的一些程序就包含着while循环。例如,游戏程序就在一个大的while循环中,在玩家退出时停止运行。用while循环能让程序在用户没有让它停止之前一直运行,这点是for循环做不到的。
? 所以在这里,退出循环就十分重要。可使用的有breakcontinue,接下来,我们将详细介绍他们的使用方法。
3.4.1 break用法
  • break 用于跳出当前循环
    当要立即退出while循环,不在运行循环体中余下的代码,也不管while后面跟的表达式是真是假,可以使用break语句。
  • 实际用法,这里运用判断输入的数是不是质数,进行演示
# 判断一个数是不是质数 a = int(input('请输入一个自然数:')) i = 2 while i

运行结果:(这里使用29及5491来运行)
5、python条件控制语句——旺仔
文章图片

5、python条件控制语句——旺仔
文章图片

运用讲解:
? 这里因为要用到的自然数是用户自己输入的,所以在代码运行前根本不知道需要循环多少次,所以使用while循环,然后我们只需要判断这个数是不是质数,所以只需要将数值a被从2到a-1的数都除一遍,只要再其中有一步可以的余数是0,就可以判断其不是质数,既可以不用再接着运行,这时就可以使用break强制退出,break之后的代码将不在运行。
3.4.2 continue用法
  • continue跳出当前循环的剩余语句,进行下一轮循环
    注意:continuebreak的区别在于,前者跳出当前(本次)循环,而后者跳出整个循环。二者既可用于while也可用于for。
  • 实际用法,这里运用打印比输入的数小的所有奇数,进行演示
# 打印比输入的数小的所有奇数 a = int(input('请输入一个数值:')) i = 0 while i < a: i += 1 if i % 2 == 0: continue print(i)

运行结果:(这里使用19来运行)
5、python条件控制语句——旺仔
文章图片

运用讲解:这里其实跟break大体上是用法差不多,因为要打印所有的比输入的数小的奇数,所以在这里只用弹出本次循环即可,如果这里使用break,将只会得到一个值1。
3.4.2 无限循环
  • 这里一定要提一下这个点,因为很多人都会遗忘这个点,包括我在刚学的时候也经常忘记,就是在写while循环的时候,忘记给判断条件中的循环变量进行递增或递减的操作,而导致把循环语句写成无限循环
例如:(像如下这样这些就不会有任何问题)
a = 1 while a <= 5: print(a) a += 1

但是像下面这样没有写a+=1,a的值就会一直是1,然后就会使循环无限运行
a = 1 while a <= 5: print(a)

4、对运算符优先级的补充
运算符说明 Python运算符 优先级 结合性 优先级顺序
小括号 () 19
索引运算符 x[i] 或x[i1: i2 [:i3] 18
属性访问 x.attribute 17
乘方 ** 16
按位取反 ~ 15
符号运算符 + (正号)、- (负号) 14
乘除 *、/、//. % 13
加减 +、- 12
位移 >>、<< 11
按位与 & 10
按位异或 ^ 9
按位或 8
比较运算符 ==、!=、>、>=、<、<= 7
is 运算符 is、is not 6
in运算符 in、not in 5
逻辑非 not 4
逻辑与 and 3
逻辑或 or 2
逗号运算符 exp1, exp2 1
5、课后作业 5、python条件控制语句——旺仔
文章图片

1、打印乘法口诀表
#乘法口诀表 # while正序 i=1 while i<=9: j=1 while j<=i: m = i*j print(f'{i}x{j}={m}',end='') j+=1 i+=1 print()# while逆序 i=9 while i>=1: j=9 while j>=(10-i): m = i*j print(f'{i}x{j}={m}',end='') j+=-1 i+=-1 print()

  • 运行结果如下:
    5、python条件控制语句——旺仔
    文章图片
  • 知识点运用及编写思路:
?运用到while循环语句,while循环嵌套,if语句,f-string站位符
?先另i=1,然后外循环每次循环i都递增1,总共循环9次,内循环前先另j=1,这样每次外循环,j的值都会被赋成1,然后使用while判断j ?如外循环第一次循环,i=1,则内循环就循环1次、外循环第二次循环,i=2,则内循环就循环2次,以此类推
?逆序的思路大体上差不多,就是在内循环的时候调整一下判断条件,使得内循环次数递减。
?如外循环第一次循环,i=1,则内循环就循环(10-i次)也就是9次、外循环第二次循环,i=2,则内循环就循环(10-i次)8次,以此类推
2、求1000以内所有的水仙花数
# 求1000以内所有的水仙花数 i = 100 sum='1000以内所有的水仙花数为:' while i < 1000: a = i//100 b = i % 100//10 c = i % 10 if i == a**3+b**3+c**3: sum += ' {}'.format(i) i += 1 print(sum)

  • 运行结果如下:
    5、python条件控制语句——旺仔
    文章图片
  • 知识点运用及编写思路:
首先要知道什么事水仙花数:
  • 水仙花数又称阿姆斯特朗数。
    三位的水仙花数共有4个:153,370,371,407;
    四位的四叶玫瑰数共有3个:1634,8208,9474;
    五位的五角星数共有3个:54748,92727,93084;
    六位的六合数只有1个:548834;
    七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;
    八位的八仙花数共有3个:24678050,24678051,88593477
?使用循环语句和if语句的嵌套,运用while让从100到1000的每一个数值都进行判断,将百位数,十位数,个位数都提取出来分别赋值a、b、c,然后判断水仙花数,如果是水仙花数,则将其赋值添加给sum,最后在所有的判断结束后输出sum,得到三位数的水仙花数。
3、获取用户输入的任意数,判断其是否是质数?
# 获取用户输入的任意数,判断其是否是质数? while True: num = int(input('请输入一个整数:')) if num > 1: break else: print('请输入一个大于1的整数:') num = int(input('请输入一个数字:'))if num == 2 or num == 3: print('您输入的数字{0}是质数'.format(num)) else: i = 2 while i < num: if num % i == 0: print('您输入的数字{0}不是质数,可被{1}整除'.format(num,i)) break else: i += 1 if num == i: print('您输入的数字{0}是质数'.format(num))

  • 运行结果如下(这里分别选择了255与257进行测试):
    5、python条件控制语句——旺仔
    文章图片

    5、python条件控制语句——旺仔
    文章图片

  • 知识点运用及编写思路:
? 运用while语句及if语句的嵌套,再这里,我为了输入的数更合理,所以先进行了判断,因为质数肯定都都是自然数,所以先判断用户输入的值是否大于等于1,是则继续,如果不是就提示用户重新输入。
? 然后就是开始数值判断,首先如果用户输入2、3这2个数值,则肯定是质数,然后我们开始判断这个数是不是质数,所以只需要将数值a被从2到a-1的数都除一遍,只要再其中有一步可以的余数是0,就可以判断其不是质数,既可以不用再接着运行,直接输出改数不是质数,并输出其可被什么数整除。
? 否则一直到循环结束,如果i的值与用户输入的sum值相等,则可以输出此数值就是质数。
4、猜拳游戏
# 猜拳游戏: # ? 出拳玩家:手动输入电脑:随机输入 # ? 判断输赢:玩家获胜电脑获胜平局 import random# 导入随机模块 A=["剪刀","石头","布"] while True: a=input("请输入代表数值(剪刀0 、石头1 、布2):")# 将输入的数据转化为整型 c=random.randint(0,2)# 随机一个0到2的整数 if a.isdigit() and a in ['0','1','2']:# 是否为数字,且在出拳数字内 a=int(a)# 转换为整型 if a==c:# 平局条件 print("平局 ",end='') elif a-c==1 or c-a==2:# 赢局条件 print("玩家获胜 ",end='') else:# 输局 print("电脑获胜 ",end='') print("玩家出%s,电脑出%s" % (A[a], A[c]))# 显示出双方出拳 else:# 输入错误 print("玩家没正确出拳")

  • 运行结果如下:
    5、python条件控制语句——旺仔
    文章图片
  • 知识点运用及编写思路:
  • 这里首先要引入random 随机模块的知识点:
    random.random():生成一个0-1之间的随机浮点数
    random.randint(a,b):生成[a,b]之间的整数,包含a,b
    random.uniform(a,b):生成[a,b]之间的浮点数
    random.choice(sequence):从特定序列的中随机取一个元素,这里的序列可以是字符列表,元组等。
? 这里我们运用的是randint(a,b),还运用了列表的索引,这里是关键,想了好久呢,最后就是if及while的嵌套,这里其实可以不用使用while循环的,但是因为每次运行都要重新操作,比较麻烦,所有加上了一个循环,然后input语句有阻断程序的作用,也不用担心会死循环。
? 然后我们首先这里定义一个A的列表,并使A=["剪刀","石头","布"],这样A[0]=“剪刀”,A[1]=“石头”,A[2]=“布”,并使用randint随机模块,随机将0~2之间的任意一个数值复制给c。
? 之后就是判断的环节了,我们先判断一下用户输入的是不是我们想要的0、1、2之间的数字,是的话就进行下一步判断,如果a==c,既用户与电脑的值一样,则是平局如果 a-c == 1 或者 c-a == 2中有一个成立,既用户赢
? 这里可能有一丝丝的小饶,且听我缓缓道来,举个例子:用户出的是石头,既a=1,电脑出剪刀,既c=0,用户才可以赢,还有2种赢的情况就是,用户出步,既a=2,电脑出石头,既c=1,以及 用户出剪刀,既a=0,电脑出步,既c=2
? 在这里,就可以得到判断条件 a-c == 1 或者 c-a == 2中只要有一个成立,则用户就赢了,其他非平局的情况,都是电脑赢
5、附加(个人练习)
  • 注:以下的代码都是基于课后作业的个人练习及思考,这里就不做知识点及思路的讲解。请多多包涵
# 使用for循环打印乘法口诀表 # for正序 for i in range(1,10): for j in range(1,i+1): print(str(i)+"*"+str(j)+"="+str(i*j)+" ",end="") print()# for逆序 for i in range(9,0,-1): for j in range(i,0,-1): print(str(i)+"*"+str(j)+"="+str(i*j)+" ",end="") print()

# 输入月份得到季节 a = int(input('请输入月份:')) if a == 3 or a == 4 or a == 5: print('{0}月份为春季'.format(a)) elif a == 6 or a == 7 or a == 8: print('{0}月份为夏季'.format(a)) elif a == 9 or a == 10 or a == 11: print('{0}月份为秋季'.format(a)) elif a == 12 or a == 1 or a == 2: print('{0}月份为冬季'.format(a))

# 求100以下的偶数之和 i = 1 sum = 0 while i <= 100: if i%2 == 0: sum += i i += 1 print(sum)

5、python条件控制语句——旺仔
文章图片

旺仔心得:
? 在学习的道路上,没有捷径可以走,只有投入时间去努力,才会有收获,这篇文章花了很长时间,包括在代码上的一些想法以及运用,也花了许久,但是当我每每一个问题想通时,那种愉悦感又使得整个人都为之振奋,怎么说呢,反正这种感觉很nice,还有满满的收获,感觉特别充实。 φ(゜▽゜*)?
5、python条件控制语句——旺仔
文章图片

    推荐阅读