Python条件控制语句知识点

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值