Python条件控制语句知识点
1. 条件判断语句(if语句)
- Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。可以通过下图来简单了解条件语句的执行过程:
1.1 执行的流程:
- if语句在执行时,会先对条件表达式进行求值判断,
- 如果为True,则执行if后的语句
- 如果为False,则不执行
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
1.2 语法:if 条件表达式 : 代码块
- 代码块代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
- 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
- 代码块就是一种为代码分组的机制
实例:
a = 10
if (a == 10):
print("Hello Python!") # 如果a == 10那么打印输出:Hello Python!
2. input() 函数
2.1 函数定义
- Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。
- Python2.x 中 input() 相等于 eval(raw_input(prompt)) ,用来获取控制台的输入。**raw_input() 将所有输入作为字符串看待,返回字符串类型。**而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )。
**注意:**input() 和 raw_input() 这两个函数均能接收 字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。
**注意:**python3 里 input() 默认接收到的是 str 类型。
2.2 语法
input([prompt]) #参数说明:prompt: 提示信息
实例:
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> a = input("请输入:")
请输入:10
>>> type(a)
<class 'str'> #默认为:字符串类型
>>> a = int(input("请输入:"))
请输入:10
>>> type(a)
<class 'int'>#通过int强制转换为:整型
>>> a = input("请输入:")
请输入:nihao
>>> type(a)
<class 'str'>
>>> a = input("请输入:")
>>> "nihao"
'nihao'
>>> type(a)
<class 'str'>
3. if-else语句
3.1 语法:
if 条件表达式 :
代码块
else :
代码块
3.2 执行流程:
- if-else语句在执行时,先对if后的条件表达式进行求值判断
- 如果为True,则执行if后的代码块
- 如果为False,则执行else后的代码块)
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if 判断条件:
执行语句……
else:
执行语句……
- 其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
- else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。
实例:
flag = False
name = 'liuyu'
if name == 'python': # 判断变量是否为 python
flag = True # 条件成立时设置标志为真
print('Hello World') # 并输出"Hello World"
else:
print(name) # 条件不成立时输出变量名称:liuyu
4. if-elif-else 语句
4.1 语法:
if 条件表达式 :
代码块
elif 条件表达式 :
代码块
elif 条件表达式 :
代码块
…
else :
代码块
4.2 执行流程:
- if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
- 如果表达式的结果为True,则执行当前代码块,然后语句结束
- 如果表达式的结果为False,则继续向下判断,直到找到True为止
- 如果所有的表达式都是False,则执行else后的代码块
- 总结: if-elif-else中只会有一个代码块会执行
- f 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。
- 当判断条件为多个值时,可以使用以下形式:
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
实例:
num = 10
if num == 3: # 判断num的值
print('大')
elif num == 2:
print('中')
elif num == 1:
print('小')
elif num < 0: # 整个语句的顺序是按照从上到下进行执行的
print('为0')
else:
print('num没有10') # 条件均不成立时输出:num没有10
- 由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
实例:
num = 9
if num >= 0 and num <= 10: # 判断值是否在0~10之间
print('Hello Python!!!') # 输出结果:Hello Python!!!
num1 = 5
if num1 < 0 or num1 >= 9: # 判断值是否在小于0或大于等于9
print('Hello Python!!!')
else:
print("不在规定范围内") # 输出:不在规定范围内
- 当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。
num = 8
# 判断值是否在0~5或者10~15之间
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print('Hello Python!!!')
else:
print("不在规定范围内") # 输出结果: 不在规定范围内
5. while语句
5.1 函数定义
- 循环语句可以使指定的代码块重复指定的次数.循环语句分成两种,while循环和for循环
- Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 判断条件(condition):
执行语句(statements)……
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假 false 时,循环结束。
5.2 执行流程:
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9qcGVnLzEwMzQ3NDgvMTU4Njg4NjM4ODk0MS1jMjE1NzRkYS0yZWU5LTQ0ZmMtYmVlMC0xYzRjYmU4ZTQzMjEuanBlZw?x-oss-process=image/format,png#align=left&display=inline&height=325&margin=[object Object]&originHeight=453&originWidth=406&size=0&status=done&style=none&width=291)
5.3 语法:
while 条件表达式 :
代码块
else:
代码块
实例:
num = 0 # 设置num的初始值
while (num < 9): # 当num小于9时循环执行以下语句
print("打印输出循环结果:%s" % num)
num += 1
print("循环结束!")
# 打印结果:
# 打印输出循环结果:0
# 打印输出循环结果:1
# 打印输出循环结果:2
# 打印输出循环结果:3
# 打印输出循环结果:4
# 打印输出循环结果:5
# 打印输出循环结果:6
# 打印输出循环结果:7
# 打印输出循环结果:8
# 循环结束!
- while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还可以是个常值,表示循环必定成立,具体用法如下:
实例:
# 1. 实现学习调研系统, 效果如下。当输入为 yes 时, 给出选项当选项为正确选项时
ipt = input("最近学习了吗?yes/no:") # 把输入框的内容做为输入赋值到ipt,此部分主要为yes和no,在yes和no以外的输入提示输入有误
a = ['1.高数', '2.Python', '3.看电影', '4.退出'] # 设置一个列表,作为题目答案
if ipt.lower() == "yes": # ipt参数统一设置为小写,输入也为小写,此if作为第一层条件判断,输入yes继续,输入no结束,输入yes或no以外的值提示输入有误
print("真棒呀!!!")
while True: # 采用while True循环语句:采用该语句的核心思想是如果出现错误的话,可以继续循环。while True 语句中一定要有结束该循环的break语句,否则会一直循环下去的。
for b in a: # 对a列表进行遍历进行多次print输出
print(b)
# print('') #输出空行
i = int(input("学习了啥好玩的,请选择:")) # 第二层输入框内容赋值到i,进行题目选项回答
if i == 1: # 当输入1时,输出:我对高数如初恋,高数虐我千万遍!
print("我对高数如初恋,高数虐我千万遍!")
elif i == 2: # 当输入2时,输出:Python充实着我的生活!
print("Python充实着我的生活!")
elif i == 3: # 当输入3时,输出:啥都没学,光顾娱乐了!
print("啥都没学,光顾娱乐了!")
elif i == 4: # 当输入4时,输出:已退出!同时退出循环
print("已退出!")
break # 用break退出循环
else: # 当输入1,2,3,4以外的数时,输出:选项有误,请重新输入!
print("选项有误,请重新输入!")
continue # 用continue继续进行第二层循环,继续回答问题选项内问题序号
elif ipt.lower() == "no": # 当第一层条件判断语句输入no时,输出:好吧,再不学习老Amy敲你哦!
print("好吧,赶快加油!")
else: # 当输入yes或no以外的值提示输入有误
print("输入有误")
**无限循环:**如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例:
num = 1
while num == 1: # 该条件永远为true,循环将无限执行下去
num = int(input("请输入:"))
print("输入1我就要无限循环了")
print("退出")
**循环使用 else 语句:**在 python 中,while … else 在循环条件为 false 时执行 else 语句块:
flag = True
num = 1
while flag == True:
if num < 0:
print("num小于0")
else:
False
print("一直执行下去")
6.作业
6.1 求1000以内所有的水仙花数
# 明确"水仙花数"是指一个三位数,那么取值范围应该在100~999,百位数字1~9,十位数字0~9,个位数字0~9
# 第一种方法:
for i in range(1, 10):
for j in range(0, 10):
for k in range(0, 10):
if i ** 3 + j ** 3 + k ** 3 == i * 100 + j * 10 + k:
print("{}*100+{}*10+{}={}".format(i, j, k, (i * 100 + j * 10 + k)),end=' ') # 返回结果:1*100+5*10+3=153 3*100+7*10+0=370 3*100+7*10+1=371 4*100+0*10+7=407
# 第二种方法
i = 100
while i < 1000:
a = i // 100 # //取整除 - 返回商的整数部分(向下取整)
b = i // 10 % 10 # %取模 - 返回除法的余数,此处为除于10的余数
c = i % 10
if i == a ** 3 + b ** 3 + c ** 3:
print(i)
i += 1 # 从100开始以步长为1自增
6.2 获取用户输入的任意数,判断其是否是质数?
质数定义:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。最小的质数是2。
num = int(input("请随机输入一个数字: ")) # 用户输入数字
if num > 1: # 质数大于 1
for i in range(2, num):
if (num % i) == 0: # 判断用户输入的数字和从2开始到用户输入的数字余数是否为0,即是否能够被整除,余数为0则不是质数,不为0则为质数
print(num, "不是质数") #
print(i, "乘于", num // i, "是", num)
break # 退出循环
else:
print(num, "是质数")
else:
print(num, "不是质数") # 如果输入的数字小于或等于 1,不是质数
6.3 控制台输出9 9乘法表
# 第一种方法:
for i in range(1, 10):
for j in range(1, i + 1):
print('{}x{}={}\t'.format(j, i, i * j), end='')
print()
# 第二种方法:
a = 1
while a <= 9:
b = 1
while b <= a:
print("{}*{}={}\t".format(a, b, (a * b)), end=' ')
b += 1
print() # 单纯的换行
a += 1
# 返回值
# 1*1=1
# 2*1=2 2*2=4
# 3*1=3 3*2=6 3*3=9
# 4*1=4 4*2=8 4*3=12 4*4=16
# 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
# 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
# 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
# 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
# 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
6.4 给用户9次机会猜1 - 10 个数字内随机来猜数字。如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误。最终结果要求用户怎么也猜不对
import random # 导入random模块
from random import randint # 再从import模块中导入randint随机函数
num = 1 #初始化输入的次数为:1次
sum_num = 9 #用户最大输入次数为9次
b = random.random() * 0.1 #系统随机数为float类型
while num <= sum_num:
a = input("请随机输入数字:")
if type(a) == int: #挖坑,用户输入的数字必须为:整型,那么用户输入的数字和随机数就不会相等
if a == b:
print("用户输入数字和结果一致")
else:
print("已经错误%d次,还剩%d次机会" % (num, sum_num - num))
num += 1
else:
print("输入类型错误,请输入整数数字")
print("输入次数已经达到最大次数%d次,请一个小时后重新输入,谢谢" % sum_num)