Python+大模型 day02
eval()
去除字符串左右两侧的引号,内部是什么就运行什么
str1 = '12'
print(eval(str1)) 12
print(type(eval(str1))) <class 'int'>str2 = '12.6'
print(eval(str2)) 12.6
print(type(eval(str2))) <class 'float'>str3 = 'False'
print(eval(str3)) False
print(type(eval(str3))) <class 'bool'># 解释: 将下方字符串左右两侧的引号去掉,就是打印hello world的代码,所以使用eval可以打印hello world
eval("print('hello world')") hello world# NameError: name 'aaa' is not defined
# 将str4两侧的引号去掉,aaa就是一个变量名,但是变量名没有被定义,所以会报错
# 注意:变量必须先定义,再调用
'''
str4 = 'aaa'
print(eval(str4))
print(type(eval(str4)))
'''
运算符
算数运算符
/:求商,0不能作为分母存在
//:整除 %:取余
**:幂次运算
先乘除,后加减,如果算数运算符优先级相同,从左至右依次运算
整除和取余运算优先级和乘除相同
幂次运算优先级最高
()改变运算符的优先级
赋值运算符=
将右侧的数据赋值给左侧的变量
# 可以一次给多个变量赋相同的值
a = b = c = 1
print(a, b, c)# 可以使用逗号分隔,一次性给多个变量赋值,但等号两侧的数量要保持一致
num1, num2 = 1, 2
print(num1, num2)
#变量必须先定义后调用,否则报NameError的错误
复合赋值运算符
相当于将算术运算符和赋值运算符进行结合,先运算后赋值
等号左侧必须是已经被定义的变量,右侧是已经被定义的变量或值
比较运算符
比较运算的结果是bool类型
注意
判断大于小于时,需要符号左右两侧的数据类型相同(数值型之间可以随意比较,如int float bool )
# 判断相等或不等时,可以与其他数据类型进行比较
# 但是数据类型不相同,一般值也不相同
print(1 == '1') #False
print(1 == True) #True
print(1 == 1.0) #True
字符串数据之间可以进行比较运算符的计算
一般不会使用字符串进行数字逻辑的比较,而一般比较字符串是为了排序
字符串之间比较大小的规则
1.是按照字符的编码序号进行比较的
ascii码:美国信息交换标准码 一共128位,代表128个常用字符,可以满足美国当时正常通讯要求
GBK:国际拓展码 内部包含所有的汉字,可以将二进制转码为中文字符,兼容ascii码
unicode:万国码,包含了全世界大部分国家的语言、符号、表情等,包含unicode8 16 32等,数字越大,包含的字符数量越多,兼容ascii
# 数字<大写字母<小写字母<汉字
print('A' < 'a') # True
print('a' < '静') # True# 含有多个字符的字符串,则从左到右依次对比,直到比出结果为止,有值的大于没值的
print('19' > '5') # False
print('51' < '53') # True
print('998' < '99a') # True
print('123' > ' 12') # True
逻辑运算符
and:两边都为真,结果才是真
or:两边都为假,结果才是假
not:真变假,假变真;真假互换
Python中的三大流程语句
顺序语句
Python代码默认都是顺序执行的,代码永远都是从上到下依次执行的
分支语句
使用if进行构造,在同一条件下,只能有一个分支中的代码被执行
# Python中没有大括号控制分支范围,那么if控制的范围要使用缩进来进行标明
# 在if后的条件末尾务必加上 : ,下一行内容务必缩进(建议缩进一个tab键的位置或者四个空格)
# if控制的所有代码务必对齐
# 取消缩进后,就不在if控制的范围之内了"""
分支语句格式:
if 条件1:条件1成立时执行的代码块
elif 条件2:条件2成立时执行的代码
elif 条件3:条件3成立时执行的代码
else:#else是否添加取决于我们上述条件是否将所有的情况覆盖完全,else是可选的条件不成立时执行的代码块首先判断条件是否成立,如果成立则执行if控制的代码块,如果不成立则执行else控制的代码块
条件判断语句就是一个结果是bool类型,或者是可以转换为bool类型的数据
"""age = int(input("请输入小明的年龄:"))
if age >= 22:print("满足转正的部分条件啦!!!")
else:print("再沉淀沉淀吧")
print("不敢怎样,明天都要继续")
print('每天都要开心哈')
debug调试
也叫做调试模式或者纠错模式
在debug模式下,代码会暂停到断点行执行之前的状态
在此状态下,我们可以查看代码的执行流程和变量值
分支语句的嵌套
只有外层条件成立时,才能执行内层的分支语句,所以内层分支语句是否执行由外层条件决定
循环语句
使用for或者while构造,条件满足时可以重复执行相同或相似的代码,条件不成立时跳出循环,继续向下执行
import random
#randint函数是一个左闭右闭的区间,下方随机整数范围为1,2,3
print(random.randint(1,3))
while循环格式
"""
while 判断条件:条件成立时,执行的代码1条件成立时,执行的代码2注意:不在while控制的缩进范围内的代码不参与循环
"""i = 0
while i < 100:print("菜就多练")i += 1
print("估计练的差不多得了")
# 循环可以提高开发效率,但是不一定会提高执行效率
循环不一定需要循环变量,必要条件:while关键字,循环条件,循环体
循环变量没有时,循环条件一直成立,循环正常执行。这种循环条件恒成立的情况,叫做死循环,也叫做无限循环。
#死循环是程序的一种正常执行状态,不一定是bug
while True:print("666")
可以使用一些非循环变量作为结束条件,比如:时间
print():表示打印一个换行符
print("\n"):实际上打印了两个,print函数本来就有end='\n'
for循环格式
for循环也是循环结构中的一种,一般和容器类型搭配使用
规则:从容器中依次获取每一个元素赋值给临时变量,当数据取完则循环终止
"""
for 临时变量 in 容器类型数据:循环体优势:
1.语法简洁,且不易出错(因为不需要循环变量来控制循环跳出条件)
2.从容器中遍历数据不需要构造数据,可以直接取用
"""str1 = "itheima"
for i in str1:print(i, end='')
# 容器内有多少个元素,for循环就遍历多少次
for循环搭配range函数使用
range函数就是一个范围函数,内部是根据特定规则生成的整数序列
使用格式:range(起始位置,终止位置,步长),这个函数是左[ ,右) 的
步长可以省略,省略后默认步长为1
起始位置是可以省略的,例如range(10)默认从0开始
步长可以是任意整数,所有参数只能使用整形数据
break:用于终止循环,即执行了break之后,循环就不再继续执行,直接执行下一句代码
break和continue只能控制当前所在循环的循环方式,只能使用在循环体中,否则报错
如果使用循环变量来控制循环跳出,则在执行continue之前,必须进行改变
break和continue只能控制当前所在循环体的循环方式
逻辑
while循环根据循环条件判断循环是否结束,一般用循环变量来控制循环结束条件
for循环是根据容器内的元素个数决定循环是否结束,不需要循环变量
场景
while循环一般构造有特定结束条件的循环或者死循环
for循环一般只对于容器类型遍历使用
在开发中一般情况下for和while可以相互转换,但是for循环使用场景比while要广一些
循环结构中的else
"""
for 临时变量 in 容器类型:循环体
else:代码块
当容器类型中的元素遍历完后,执行else中的代码
"""
"""
while 条件:循环体
else:代码块
当循环条件不满足时,执行else中的代码
"""
总结
当循环正常结束后,就要执行else中的代码
注意
当循环异常终止时,else中的代码将不会执行
while循环不是因为条件不成立而终止的循环就是异常终止,比如:break
for循环不是因为容器中的元素遍历完而终止的循环就是异常终止,比如:break
break会导致程序异常终止,而continue不会