02-python 基础语法知识-01流程控制

教你用 python 辨别"真假是非"

02-python 基础语法知识-01流程控制

总体 要讲的大纲内容 如下

  • 循环- for while
  • 流程中断 continue break
  • 逻辑操作 and ,or ,not
  • 函数
  • python中的异常处理

​ 今天是我们学习python 第5次内容,回忆之前 我们之前学习的内容,我们主要讲了一些python中 常用的类型,数字,字符串 ,元祖,字典,集合等 这些内容,以及介绍了这些数据类型的一些操作。当然有很多了,实际上 很多的方法,你可能没有办法 全部记得 ,记得多多复习才行。

今天咱们不继续 说 数据类型,咱们要开始 学习流程控制 。有了一些基础的数据类型 在说 一些流程控制的相对 简单一点。

真值检测

介绍完 基础的数据结构后,这个时候 聊聊 真值检测比较 合适,在python 中什么认为 是真, 什么是假?

最直接办法 感觉 基本 都能对,哈哈, python是不是很简单 !

比如 10> 5 为真 ,10== 10 为真 。

还有一些 比较复杂的,

  • None ,False 这些 都是假

  • 0 , 0.0 这些值 都为假

  • 空的数据类型 ,之前 我们学的所有的数据类型 list, tuple, dict ,str ,set ,range

    比如 [] ,() ,{} ,’’ ,set(), range(0) 全是假

如何判断真假

你可能说 这有什么难的? 很简单的啊。听我慢慢道来 。

如果 不确定 一个东西是真 是假, 可以用一个 函数 bool(元素) 它的返回值,True 或者 False

>>> bool(0)
False
>>> bool(0.0)
False
>>> bool(0.1)
True
>>> bool([])
False
>>> bool(dict())
False
>>> bool(set())
False
>>> bool(tuple())
False

说说哪些是真值, 之前的基础数据类型,dict ,set ,frozenset,tuple ,list 只要里面有元素 ,不论是什么, 它一定是真值。

举个例子 :

有一个list ,有一个元素 0, nums=[0,] ,bool(nums) 就为True

>>> bool(0)
False
>>> # 注意这里的区别
>>> bool([0])
True
>>> #list 中放入一个元素,不论这个元素本身 是真还是假值, 整体就是真值。
>>> bool([[]])
True

其他的几种也是类似的性质,只要记住 容器类型,只要放入一个其他的元素 ,不管元素本身真假,这个整体就是真值 。

来看下例子:

>>> t = tuple([[],])
>>> bool(t)
True

>>> bool(1)
True

>>> s = set([0])
>>> bool(s)
True

>>> # 空字符串 是假, 字符里面是空格 这个就是真值。
>>> bool('')
False
>>> bool('  ')
True

看到了吗,很多你想不到的情况吧,字符串有一个空格,这个字符串 就是真值,字符串中什么都没有才是假值 。

如何判断真假, 对于dict,list ,set ,tuple ,list 只要里面有元素,就一定是真值 。

逻辑运算

python中的逻辑运算 ,就是 与 ,或 ,非 分别对应关键字 and , or , not

0 代表 假 , 1 代表真 。

这个表格 的意思

对于 and 必须 两个表达式 都为真, 这个表达式才是真 ,否则就假。

对于or 表达式 只要一个为1 , 这个表达式 就是真 。

对于 not 表达式 ,就是取相反 的值。原来p为真,not p 就为假。

pqp and qp or q
0000
0101
1001
1111
pnot p
10
01

还有一点逻辑运算的值 是什么?

有很多人认为 逻辑运算的值不是 True or False 吗?

OperationResultNotes
x or yif x is False, then y, else x(1)
x and yif x is False, then x, else y(2)
not xif x is False, then True, else False(3)

对于 or 的运算符

x or y 如果x 为真值,整个表达式 的值 就是 x , 无论 y 是什么,

​ 如果 x 为假值, 整个表达式的 值 就是 y

>>> r = [1,2,3] or 0
>>> r
[1, 2, 3]

>>> 1 or [1,2,3]
1
>>> True or [1,2,3]
True
>>> 1 or [1,2,3]
1
>>> (4,5) or [1,2,3]
(4, 5)


>>> r = 0.0  or  ['one','two']
>>> r
['one', 'two']


对于and 运算符

x and y 如果 x 为假值,整个 表达式 就是 x ; 如果x 为真值,整个表达式的值 就是 y

>>> # x 为假值 
>>> 0.0  and 'frank'
0.0

>>> False  and ['one','two']
False
>>> None  and ['one','two']   #  这里返回None 

>>> {} and  'frank'
{}

>>> r = {}  and 'frank'
>>> r
{}

>>> # x 为真值
>>> 1 and 'frank'
'frank'
>>> 1 and {}
{}
>>> 1 and tuple()
()
>>> True and  'aaa'
'aaa'

not 运算符 返回值 只有 真假 True, False

>>> not  'fff'
False
>>> not {}
True
>>> not tuple()
True
>>> not []
True

if 语句

形式如下, 如果条件表达式 为真值,执行语句1 ,否则执行语句2

if 条件表达式:
    pass  #语句1
else:
    pass  #语句2 
num = 10
if num > 5:
    print("Hello Frank")
else:
    print("Hello World")

这里num =10 , 显然 大于5 所以 打印 Hello Frank

num> 5 这个就是条件表达式。

如果条件中有多个分支, 安装 下面的结构 写法

num = 10

if num >= 10:
    print(f"num={num}")
elif num >= 5:
    print(f"num={num}")
else:
    print(f"num < 5 ,num={num}")

for 语句

在之前介绍 基础数据结构中 介绍了 for 语句,还记得 我们是如何遍历 list的吗 ?

>>> for  i in range(4):
...     print(i)
...     
0
1
2
3	

今天 咱们就说下 for 语句 ,

for  元素 in  iterable :
    pass

iterable 中文的意思 可迭代对象 , 在python基础的类型 哪些是可迭代对象呢?

list ,tuple ,dict ,set ,str ,range() 都是 可迭代对象 .

>>> 
... person = {
...     'weight': 60,
...     'name': 'frank',
...     'height': 165,
...     'hobby': 'swimming'
... }
>>> for p in person:
...     print(p)
...     
weight
name
height
hobby


>>> for i in ['one','two','three']:
...     print(i)
...     
one
two
three
>>> 

>>> for i in ('one','two','three'):
...     print(i)
...     
one
two
three

>>>
>>> for  i in "Frank":
...     print(i)
...     
F
r
a
n
k

>>> # set 
>>> for i in set(['one','two','three']):
...     print(i)
...     
two
one
three

看到 这么多数据类型 都是可以迭代的 。

for小练习

来做一个 小练习, 我们来通过 for 来实现 9*9 运算表, 思考一下?

for i in range(1, 10, 1):
    for j in range(1, i + 1, 1):
        print(f"{i}*{j} = {i * j} ", end=' ')

    print()

结果如下

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  

上面 你可能 不知道 print() 中 end 这里 就是 打印完内容后 添加 空字符串 , 在进行下一次打印, 默认情况下 print() 会打印一个空行。

while 语句

while 语句

while 条件表达式:
	pass
	

如果 条件表达式 为真值, 则进行 while 下面的pass 的语句段,通常 在pass 语句段里面要 有能够改变 条件表达值 真值的语句, 如果 没有这个语句,一旦进入while ,永远退出不了 while 代码块

count = 0

while count < 5:
    print(f"current count = {count}")
    count = count + 2

print("while block end.")

结果如下:

current count = 0
current count = 2
current count = 4
while block end.

这里count< 5 就是条件表达式 ,每次 count +2 , 当count =6 的时候 ,count< 5 就为假值, 就开始执行 while 下面的一句代码段 。

break

break 可以提前 终止循环, 比如 有些时候 我们想 在遍历一些 元素的时候 想提前 结束循环,举个例子

>>> for i in range(5):
...     print(f"i = {i}")
... print('hello world')
i = 0
i = 1
i = 2
i = 3
i = 4
hello world

这个时候 我希望 i 等于 2 的时候 ,不在 执行 下面 3,4 的打印 ,这个时候就可以 用break, 来提前跳出循环

>>> # -*- coding: utf-8 -*- 
... 
... for i in range(5):
... 
...     print(f"i = {i}")
...     if i == 2:
...         break
... print('hello world')
i = 0
i = 1
i = 2
hello world

break 语句 的作用 就是 提前 跳出 for 循环,然后进入for 下面的 打印 hello world 的语句。

如果 有双层for 循环 ,只会跳出 内部的for 语句

for i in range(5):
    for j in range(5):
        if j in {2, 4}:
            break
        print(f"i={i},j={j}",end='  ')
    print()
   

结果如下:

i=0,j=0  i=0,j=1  
i=1,j=0  i=1,j=1  
i=2,j=0  i=2,j=1  
i=3,j=0  i=3,j=1  
i=4,j=0  i=4,j=1  

看这里 外层循环 i 从0 -> 4 , 内层 每次j =0,1 之后 遇到2 就break出来了。

continue

continue 的继续的意思, 也是 流程控制的一个关键字,这里 提前结束 本次循环,然后 进入下次循环。

这里 当i = 2或者3 进行 下一次 循环,continue 后面的语句 在本次循环中 就不在执行 了。

>>> for i in range(5):
...     if i in {2, 3}:
...         continue
...     print(f"i = {i}")
... print('hello world')

i = 0
i = 1
i = 4
hello world

如果这里 换成 break , 当i等于2 的时候,整个 for 循环 就结束了。

>>> for i in range(5):
...     if i in {2, 3}:
...         break
...     print(f"i = {i}")
... print('hello world')
... 
i = 0
i = 1
hello world

​ 这就是 break与 continue 的区别 。 总结一下,break 直接跳出循环, continue 结束本次循环,并没有跳出整个循环 语句 。

猜数字游戏

咱们玩一个猜数字的游戏吧

每次要求输入一个数字, 这个数字要求 1-50 之间 ,计算机 也随机从这里 选择中一个数字,

然后 你猜一个数字

程序告诉你 大了,还是小了, 来进一步猜测,直到你猜出结果。

可以先思考一下 ,如何做? 提示 生成一个随机数, 在python 有一个内置模块 , random

# -*- coding: utf-8 -*- 

from random import randrange

# 记录猜的次数
count = 0
rand_nums = randrange(0, 51)

num = int(input("请输入你要猜的数字 [0-50]: "))

while True:
    if num > rand_nums:
        print("猜的太大了。")
        count += 1
        num = int(input("请输入你要猜的数字 [0-50]: "))
    elif num < rand_nums:
        print('猜的太小了')
        count += 1
        num = int(input("请输入你要猜的数字 [0-50]: "))
    else:
        count += 1
        print(f'恭喜你,猜对了. 你一共猜了{count} 次')
        # 猜对了要终止 循环 条件
        break

总结

​ 今天 我们学习 python 中比较常见的流程控制 语句 ,for, if ,break ,continue,while 等 ,还要直到 如何判断一个 值 是否 为真值, 可以使用 bool(元素) ,学习 了 逻辑运算符,and ,or ,not 这些逻辑判断,要熟练掌握。

当掌握了这些流程控制后,我们之后就可以 写一下 代码了。加油 ,好好学。

参考文档

and-or-not

if-statements

for-statements

break-continue

分享快乐,留住感动. 2020-03-25 21:15:19 --frank
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值