18.Python运算与控制循环

作者 : icbug 发布时间: 2020-06-7 文章热度:392 共3775个字,阅读需10分钟。 本文内容有更新 手机浏览

目 录

18.Python运算与控制循环

布尔值(bool)

True : 非 0 的数字,非空的(字符串、列表、元组、字典) False: 0 '' () [] {} None 布尔值可以通过逻辑运算符 and(且)、or(或)、not(非)来运算 and(且)运算,所有条件都符和才为 True。

>>> True and True
True
>>> True and False
False
>>> False and False
False
>>>

or(或)运算,叧要其中有一个为 True,都为 True

>>> True or False
True
>>> True or True
True
>>> False or False
False
>>>

not(非)运算

>>> not True
False
>>> not False
True
>>>

空值:空值为 None;

None 不能理解为 0;0 是有意义的,None 是一个特殊的空值; 非 且 或 (执行先后顺序)。

自增运算

其他语言:

Var int i
i = 0
i++ # 等同后面 i = i+1
 printf(i)

Python:

i = 10
i += 1 #等同后面 i = i+1
i += 2 #等同后面 i = i+2
i -= 1 #等同后面 i = I-1
i *= 1 #等同后面 i = i*1
i /= 1 #等同后面 i = i/1

比较关系运算符

运算符 描述
<> 检查两个操作数的值是否相等,如果值不相等,则条件变为真。Python与Pascal等特有方式,java和c没有,在Python3废弃了
> 检查左操作数的值是否大于右操作数的值,如果是,则条件成立
< 检查左操作数的值是否小于右操作数的值,如果是则条件成立
>= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立
<= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立
逻辑运算符

看一下输出什么?

or 和 and 顺序比较(and>or)

>>>True or False and False
True

如果先算 or 就会输出:False

not 和 and 顺序比较(not>and)

>>>not False and False
False

如果先算 and 就会输出:True

not 和 or 顺序比较(not>or)

>>>not False or True
True

如果先算 or 就会输出:False

无意义的逻辑:

>>> True or False
True

后面如何写如何改变输出都是 True

>>>False and True
False

实战(面试题):

闰年是公历中的名词:

普通年:能被 4 整除但不能被 100 整除的年为普通闰年。(如 2004 年就是闰年,1999 年不是闰年);

世纪年:能被 400 整除的为世纪闰年。(如 2000 年是世纪闰年,1900 年不是世纪闰年);

year = int(input('请输入一个年份:'))
if (year % 4) == 0 and (year % 100) != 0 or (year % 400) == 0:
 print('{0}是闰年'.format(year))
else:
 print('{0}不是闰年'.format(year))

运行结果如下:

18.Python运算与控制循环-icbug创客


Python流程控制

正常流程(如下图):

18.Python运算与控制循环-icbug创客

流程控制三步骤:

if 判断 ,for 循环:广度循环 while 循环:深度循环

if语句

if语句判断语句,只有满足if条件才会执行if下的语句

18.Python运算与控制循环-icbug创客

关键词: ifelse,elif

elif : 为else if的缩写,可以有多个elif但是我们只能用一个else

if的格式

if 语句1 :
    block 语句块
elif 语句2:
    block
else:
    block

那么我们这里的:有什么作用,它的作用是用来区分我们的代码之间的层次的

例子:

age = 18
if age >= 18:
 print('你巫绉长大了')
elif age >= 6:
 print('孩子 你还小')
else:
 print('hello 小 baby 叔叔带你去游乐场')

在这里我们需要处理好我们的判断语句,减少我们没有意义的判断

一定要区分if elif和 if if 的区别

例子:

num = 10
#if elif 是一个判断,一个条件执行后就不会有第二个条件执行
if num < 30:
 print('< 30')
elif num < 100:
 print(' < 100')
# if if 是两个不同的判断,不影响
if num < 30:
 print('< 30')
if num < 100:
 print('< 100')

for循环

1. for 循环的格式:

for 变量 in 可迭代对象:

block 循环语句块

什么叫做可迭代对象?

我们把可以通过 for...in...这类语句迭代读取⼀条数据供我们使用的对象称之为可迭代对象(Iterable)

循环示例:

for i in range(10): #一个参数
 print(i,end='-')
for i in range(2,10): #两个参数
 print(i,end='-') #带有步长 range
for i in range(2,10,2): #三个参数
 print(i,end='-') #字符串癿遍历 
name = 'icbug'
for i in name:
 print(i)

特殊的for循环示例:

a= [(1,2),(3,4)]
for i in a:
 print(i[0])
#i,j = (1,2) 序列解包赋值
for i,j in a:
 print('这是 i %s'%i)
 print('这是 j %s'%j)

嵌套循环:

嵌套 for 循环的格式:

for 条件 1:

条件 1 满足时,做的事情 1

for 条件 2:

条件 2 满足时,做的事情

嵌套 for 循环的规律:

外局循环一次

内局循环一遍

实战(打印9×9乘法表)

for i in range(1,10):# i =1 i = 2
 for j in range(1,i+1):#(1,2) i1,2
 print('%d x %d = %d\t'%(j,i,i*j),end='')
print()

注意:这里我们是外层循环一次,内层循环一次。

while循环

while 循环,while 循环和 for 循环不同,for 循环是一个广度遍历,而 while 循环是一个深度遍历,

while 循环,指当满足 while 的条件的时候,就一直循环执行 while 的语句块,直到不满足条件

格式:

while (条件):
    条件满足时做的事情
   else:
    条件不满足时做的事情

如果条件一直满足就形成了死循环

while普通示例:

i = 1
while i > 5:
    print('hello')
 else:
    print('bye!')

while的嵌套用法:

n = int(input('请输入你想要的数字'))
i = 1
while i <= n:
 j = 1
 while j <= i:
 print('*',end='')
 j += 1
 print()
 i += 1

流程控制词(面试题)

pass,continue,break

循环是让计算机重复做任务最有效率的方法

pass:

只在任何缩进的语句块部分,只起到占位作用,什么事情都不会做,只是起到满足python语法部分

break:语句可以再循环过程中直接退出循环,continue语句可以提前结束本轮循环,并开始下一轮循环

推导式(面试题)

列表推导式

列表推导能非常简介的构造一个新的列表:只是用一个简介的表达式进行变形转换

语法:[变量for变量in 可迭代对象]

比如现在我们要生成一个列表,列表中的元素为 0-10,首先我们不用列表推寻式,该如何来实现?

result1 = []
for i in range(10):
 result1.append(i)
print(result1)
如何使用列表推寻式
result = [i for i in range(10)]
print(result)

相比上方的代码是否简介了很多呢?

那么我们继续,如何使用列表推寻式求出对象的偶数呢?

result = [i for i in range(10)if i % 2 ==0 ]

比如现在有一个列表L = [[1,2,3],[4,5,6],[7,8,9]]

我们需要求出1/4/7和1/5/9元素,那么我们应该如何取出

看代码:

L = [[1,2,3],[4,5,6],[7,8,9]]
result = [i[0] for i in L]
print(result)

运行结果如下

[1,4,7]

那么求出1,5,9代码如下

L = [[1,2,3],[4,5,6],[7,8,9]]
result1 = [L[i][i] for i in range(len(L))]
print(result)

运行结果如下:

[1,5,9]

字典推导式

字典和集和推导式是该思想的延续,语法差不多,不过产生的是集合和字典而已。

dic2 ={k:v for k,v in {'name':'for','age':18}.items()}
集合推导式

集和推导式跟列表推导式非常相似,唯一区别在于用{}代替[]

L = [1,2,3,1,2,3,4]
set1 = {i for i in L}
print(set1)
元组生成器
a = (i for i in range(5))
for i in a:
 print(i)

深浅拷贝

定义

深拷贝:

拷贝所有对象,包括顶级对象以及嵌套对象,所以原始对象的改变不会造成深拷贝里任何子元素的改变

浅拷贝:

叧拷贝顶级对象, 没有拷贝嵌套对象,所以原始数据改变,嵌套对象会改变!

import copy
a = [1,2,3,4,[5,6,7,9,10]]
b = a
print('a 癿 di:%s,b 癿 id:%s'%(id(a),id(b)))
c = copy.copy(a)
print(id(c))
d = copy.deepcopy(a)
print(id(d))
a.append(8)
a[4].append(9)
print(a)
print(b)
print(c)
print(d)

常见问题FAQ

本站资源是否全部免费?
本站文章和普通速度下载资源免费,高速下载资源和讲解视频需要成为SVIP才能查看哦!
本站采用标准 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明!
icbug创客 » 18.Python运算与控制循环

1 评论

发表评论

CAPTCHAis initialing...