Python基础(4)- 运算符
P30 数据类型转换 2024/8/6
一、问题引入
n1 = 100
result = "n1的值为:" + n1
print(result)
- 很明显是不可以的,直接就报错了
二、隐式类型转换
- Python变量的类型不是固定,会根据变量当前值在运行时决定的,可以通过内置函数type(变量)来查看其类型,这种方式就是隐式转换,有的书也称为自动转换。
- 在运算的时候,数据类型会向高精度自动转换
三、显式类型转换
1、如果需要对变量数据类型进行转换,只需要将数据类型作为函数名即可,这种方式就是显示转换**/强制转换**
2、以下几个内置的函数可以完成数据类型之间的转换。函数会返回一个新的对象/值,就是强制转换后的结果
# 显式类型转换案例i = 10
j = float(i)
print("j的类型",type(j), "j的值", j)k = str(i)
print("k的类型",type(k), "k的值", k) # str ,"10"
四、显式类型转换的注意事项
1、不管什么值的int,float都可以转成**str, str(x)**将对象转换为字符串(Python中一切皆为对象)
n1 = 100
n2 = 123.65
print(str(n1)) # 100
print(str(n2)) # 123.65
2、int转成float时,会增加小数部分,比如123->123.0,float转成int时,会去掉小数部分。比如:123.65->123
n1 = 100
n2 = 123.65
print(float(n1)) # 100.0
print(int(n2)) # 123
3、str转int,float使用int(x),float(x)将对象×转换为int/float
n3 = "12.3"
print(float(n3))
print(int(n3)) # 有小数点是无效的
# ValueError: invalid literal for int() with base 10: '12.3'
4、在将str类型转成基本数据类型时,要确保str值能够转成有效的数据,比如我们可以把"123”,转成一个整数,但是不能把"hello”转成一个整数,如果格式不正确,程序会报 ValueError,程序就会终止。
n4 = "hello"
print(float(n4))
# ValueError: could not convert string to float: 'hello'
5、对一个变量进行强制转换,会返回一个数据/值,注意,强制转换后,并不会影响原变量的数据类型(即:不会影响原变量指向的数据/ 值的数据类型)
i = 10
j = float(i)print("i的值为:",i,"类型为:",type(i))
print("j的值为:",j,"类型为:",type(j))
五、课堂练习
# @Author :zjc
# @File :13_type_change_exercise.py
# @Time :2024/8/7 8:29i = 10
j = float(i)print(type(i)) # int
print(type(j)) # floati = j + 1
print(type(i)) # float
print(type(j)) # floatprint(i) # 11.0
print(int(i)) # 11
print(type(i)) # float
P31 本章作业 2024/8/7
# @Author :zjc
# @File :14_homework_01.py
# @Time :2024/8/7 8:51name = "jack"
age = 20
score = 90.2
gender = "男"
hobby = "打篮球"# 按照规定的格式输出信息
print("姓名\t\t年龄\t\t成绩\t\t性别\t\t爱好\n" + name + "\t"+ str(age) + "\t\t" + str(score)+ "\t"+ gender + "\t\t" + hobby)
P32 本章小结 2024/8/7
P33 算术运算符讲解 2024/8/8
一、运算符介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符[二进制基础]
1、算术运算符是对数值类型的变量进行运算的,在程序中使用的非常多
代码演示:
# @Author :zjc
# @File :01_arithmetic_operator.py
# @Time :2024/8/8 17:06# 算术运算符的演示# / , // , % , **# 1. 对于除数返回的结果是小数
print(10 / 3) # 3.3333333333333335# 2. 对于取整数 //,返回商的整数部分(并且是向下取整)
print(10 // 3) # 3
print(10 // -3) # -4# 3. 取模%,当对一个数取模的时候,对于的运算公式是:a % b = a - a // b * b
print(10 % 3)print(-10 % 3) # 2
# -10-(-10) // 3 * 3= -10-(-4)*3=-10-(-12)=2
print(10 % -3) # -2
# 10-10 // (-3) * (-3)=10-(-4)*(-3)=10-12=2
print(-10 % -3) # -1
# -10-(-10) // (-3) * (-3) = -10+9=-1# 4. 幂运算
print(2 ** 5) # 32
P34 算术运算符练习 2024/8/12
一、练习
1、假如还有97氏放假,问:合xx个星期零天?
# @Author :zjc
# @File :02_arithmetic_exercise.py
# @Time :2024/8/12 11:12# 1、假如还有97氏放假,问:合xx个星期零天?
'''思路分析:1. 定义变量days:记录总的天数week:记录对应的星期left_day:记录剩余的天数
'''
days = 97
week = days // 7
left_day = days % 7
print(f"{days}天,还有{week}个星期,剩余{left_day}天")
print("%d个星期%d天" % ((97 / 7), (97 % 7)))
2、定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。[234.5]
# 2、定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),
# 请求出华氏温度对应的摄氏温度。[234.5]
"""1.直接套用公式即可,定义变量hua_shi,she_shi
"""
hua_shi = 234.5
she_shi = 5 / 9 * (hua_shi - 100)
print(f"华氏温度{hua_shi},摄氏温度{she_shi}")
print("华氏温度%.2f,摄氏温度%.2f" % (hua_shi, she_shi))
P35 比较运算符 2024/8/13
一、基本介绍
比较运算符的结果要么是True,要么是False
比较表达式经常用在if结构的条件,为True就执行相应的语句,为False就不执行
案例演示:
# @Author :zjc
# @File :03_compare_operator.py
# @Time :2024/8/13 11:30a = 9
b = 8print(a > b) # true
print(a <= b) # F
print(a != b) # T
# 表示将a > b的结果,赋给flag
flag = (a > b)
print(a is b) # F
print(a is not b) # T
- 会出现这么一种情况:
a==b为True,但是a is b为False
二、使用细节
1、比较运算符的结果要么是True,要么是False
2、比较运算符组成的表达式,我们称为比较表达式,比如: a >b
3、比较运算符**==不能误写成=**
P36 逻辑运算符 2024/8/13
一、基本介绍
-逻辑运算也被称为布尔运算
-逻辑运算符一览表
代码演示:
# @Author :zjc
# @File :04_bool_operator.py
# @Time :2024/8/13 15:25a = 10
b = 20print(a and b) # 20
print(a or b) # 10
print(not (a and b)) # False
二、案例演示
- and 案例
# @Author :zjc
# @File :05_and_operator.py
# @Time :2024/8/13 15:34# 案例
# and运算符的使用
# #定义一个成绩变量
score = 70# 判断成绩是否在60-80之间
if (score >= 60 and score <= 80):print("成绩还不错~")
注意事项:
- and是种"短路运算符",只有当第一个为True时才去验证第二个
- 在Python中,非0被视为真值,0值被视为假值
- or运算符
# @Author :zjc
# @File :06_or_operator.py
# @Time :2024/8/13 17:50# or运算符的使用
# 定义一个成绩变量
score = 60
# 判断成绩是否<=60或者>= 80
if score <= 60 or score >= 80:print("hi~")
注意事项:
1、or是一种"短路运算符",只有当第一个为False时才去验证第二个(换言之,如果第一个为True,就直接返回第一个的值)
2、再次提醒:在Python中,非0被视为真值,0值被视为假值
3、not运算符
# @Author :zjc
# @File :07_not_operator.py
# @Time :2024/8/14 8:46# 代码
a = 3
b = not (a > 3) # True
print(b) # True
print(not False) # True
print(not True) # False
print(not 0) # T
print(not "jack") # F
print(not 1.88) # F
print(not a) # F
P37 赋值运算符 2024/8/14
一、基本介绍
-赋值运算符就是将某个运算后的值,赋给指定的变量
-赋值运算符一览
代码演示:
# @Author :zjc
# @File :08_assign_operator.py
# @Time :2024/8/14 9:00# 1.赋值运算符案例num1 = 10
i = 100
i += 100 # i = i+100
print("i=", i)
i -= 100
print("i=", i)
i *= 2
print("i=", i)# 2. 有两个变量,a和b,要求将其交换,最终打印结果
a = 30
b = 40
print(f"没有交换前a={a},b={b}")
"""分析:1. 先定义一个中间变量temp2. temp = a 先把a的值保存到temp3. a = b 把b的值赋值给a4. b = temp 把temp的值赋给b
"""
t = a
a = b
b = t
print(f"交换后a={a},b={b}")
- Python中支持一个简单的方式实现变量交换
"""在python中支持一个简单的方式实现变量交换x,y = y,x
"""print(f"没有交换前a={a},b={b}")
a, b = b, a
print(f"交换后a={a},b={b}")
思考题:
- 有两个变量, a和b,要求将其进行交换,动动脑筋。要求不使用前面老师讲过两种方式完成。
# @Author :zjc # @File :09_assign_class_operator.py # @Time :2024/8/14 9:38a = 25 b = 80 print(f"交换前a={a},b={b}") a = a + b # 105 b = a - b # 25 a = b - a # 80 print(f"交换后a{a},b={b}")
二、赋值运算符特点
1、运算顺序从右往左num = a +b +c
2、赋值运算符的左边是变量,右边可以是变量、表达式、字面量,比如
num1 = 20 num2 = 78 * 34 - 10 num3 = a num4 = a * b
P38 三元运算符 2024/8/14
一、基本语法
- Python是一种极简主义的编程语言,它没有引入
?:
这个运算符,而是使用if else关键字来实现相同的功能 - -语法是:
max = a if a>b else b
如果a>b成立,就把a 作为整个表达式的值,并赋给变量max
如果a>b不成立,就把b作为整个表达式的值,并赋给变量max
代码演示:
- 1、使用前面的方式,得到2个数的最大值
# @Author :zjc
# @File :010_ternary_operator.py
# @Time :2024/8/14 10:01# 请使用前面的方式,得到两个数的最大值a = 10
b = 80
max = a if a > b else b
print(max)
- 2、请使用前面讲的if-else方式,得到3个数的最大值
# @Author :zjc
# @File :011_ternary_operator_exercise.py
# @Time :2024/8/14 22:44a = 50
b = 100
c = 70
"""思路分析:1. a,b,c三个数2. 先求出a,b的最大值 max13. 在求出 max1 和 c的最大值
"""
max1 = a if a > b else b
max2 = max1 if max1 > 1 else c
# 也可以使用一条语句成功,但是可读性较差(不推荐)
# max = c if (a if a > b else b) < c else (a if a > b else b)
print("max2=",max2)
P39 运算符优先级 2024/8/15
-运算符有不同的优先级,所谓优先级就是表达式的运算顺序
-如图(后面),上一行运算符优先于下一行