Python基础02-运算符与条件结构

零、文章目录

Python基础02-运算符与条件结构

1、数据类型转化

(1)回顾Python数据类型
  • 问题1:Python中一共有多少种数据类型?分别是什么?

    • 数值类型、布尔类型、字符串、元组、列表、字典、集合
  • 问题2:为什么需要这么多数据类型?

    • 答:在日常生活中,我们经常会出门买东西,每个买的商品都有自己的属性。
  • 超市收银系统案例:

image-20231118105401530

# 1、提示用户输入商品编号、名称以及商品价格
id = input('请输入您购买商品的编号:')
name = input('请输入您购买商品的名称:')
price = input('请输入您购买商品的价格:')

# 2、使用print()方法进行格式化输出
print(f'您购买了{
      
      name},商品编号为{
      
      id},商品价格为{
      
      price*2},欢迎下次光临!')
  • 输出
请输入您购买商品的编号:111
请输入您购买商品的名称:123
请输入您购买商品的价格:10
您购买了123,商品编号为111,商品价格为1010,欢迎下次光临!
  • 字符串和数字相乘
# 1、定义一个字符串
str1 = 'hello'
# 2、让字符串与数字相乘
print(str1 * 3)  # hellohellohello,结论:字符串与数字相乘,相当于把字符串进行复制

str2 = '18.5'
print(str2 * 2)  # 18.518.5
(2)为什么需要数据类型转换
  • 问:以超市收银系统为例,input()接收用户输入的数据都是字符串类型,如果用户输入商品价格为18.5,想得到浮点型数据该如何操作呢?
  • 答:转换数据类型即可,即将字符串类型转换成浮点类型。
# 1、提示用户输入商品编号、名称以及商品价格
id = input('请输入您购买商品的编号:')
name = input('请输入您购买商品的名称:')
price = float(input('请输入您购买商品的价格:'))  # str => float数值类型

# 2、使用print()方法进行格式化输出
print(f'您购买了{name},商品编号为{id},商品价格为{price * 2},欢迎下次光临!')
  • 输出
请输入您购买商品的编号:111
请输入您购买商品的名称:123
请输入您购买商品的价格:10
您购买了123,商品编号为111,商品价格为20.0,欢迎下次光临!
(3)数据类型转换函数

image-20231118105518069

image-20231118105525990

(4)案例演示
  • 数据类型转换
'''
在Python代码中,需要大家掌握4种数据类型的转换方法。
int() : 把其他数据类型转换为整数
float() : 把其他数据类型转换为浮点数
str() : 把其他数据类型转换为字符串类型大数据
'''
# 1、定义一个str字符串类型的数据
str1 = '10'
num1 = int(str1)
print(num1)
print(type(num1))

# 2、float => int
float2 = 9.88
num2 = int(float2)  # 把浮点数直接转换为整数(警告:浮点类型转换为整数类型,则小数点后面的数据都会被舍弃)
print(num2)

# 3、int/float => str
num3 = 6.95
str3 = str(num3)
print(str3)
print(type(str3))
  • 输出
10
<class 'int'>
9
6.95
<class 'str'>
  • 特殊转换
'''
特别特殊的数据类型转换方法
eval() : 把字符串类型的数据转换为原数据类型,简单来说就是字符串中的数据像什么就转化为什么类型
'10' => eval => int
'9.88' => eval => float
'123abc' => eval => 报错 => 本身无法发生转换,因为里面的内容没有意义
eval方法必须发生类型转换,如果想把一个字符串在转换为字符串,eval方法会报错的!

注意:类型转换中的数据必须是有意义的!
'''
str1 = '10'
num1 = eval(str1)
print(num1)
print(type(num1))

str2 = '9.88'
num2 = eval(str2)
print(num2)
print(type(num2))

# 错误演示
# str3 = '123abc'
# num3 = eval(str3)
# print(num3)

# str4 = '9.88'
# num4 = int(str4)  # 正确转换方法 str => float => int
# print(num4)
  • 输出
10
<class 'int'>
9.88
<class 'float'>

2、运算符的使用

(1)运算符分类
  • 算术运算符
  • 赋值运算符
  • 复合赋值运算符
  • 比较运算符
  • 逻辑运算符
(2)算术运算符
  • 混合运算优先级顺序:( ) 高于 ** 高于 * / // % 高于 + -

image-20231118152740969

  • 算术运算符演示
num1 = 9
num2 = 4

print(num1 + num2)
print(num1 - num2)
print(num1 * num2)
print(num1 / num2)  # 注意:除法运算中,返回结果是一个float浮点类型的数据

print(num1 // num2)  # 返回商部分内容
print(num1 % num2)  # 返回余数部分内容

print(num1 ** num2)  # 9的4次方

print((num1 + num2) * 3)  # 先算num1 + num2,然后再进行乘法运算
  • 输出
13
5
36
2.25
2
1
6561
39
  • 求梯形面积案例

image-20231118153050480

'''
题目分析:求梯形的面积
需求分析:
① 梯形面积公式 s = (上底 + 下底) * 高度 / 2
② 提示用户输入 => input()
③ 根据面积公式求结果

input() => str字符串类型
'''
# 1、提示用户输入梯形的上底、下底、高
a = float(input('请输入梯形的上底:'))
b = float(input('请输入梯形的下底:'))
h = float(input('请输入梯形的高:'))

# 2、结合面积公式
s = (a + b) * h / 2

# 3、输出结果
print(f'梯形的面积为{s:.2f}')
  • 输出
请输入梯形的上底:10
请输入梯形的下底:20
请输入梯形的高:5
梯形的面积为75.00
(3)赋值运算符

image-20231118154038343

'''
赋值运算符就是日常生活中的=等号,在Python中被称之为赋值运算,把右边的值或者表达式的执行结果赋值给左边的变量
变量名称 = 变量的值
或
变量名称 = 运算表达式,如1 + 1

=赋值运算符执行流程,在Python代码中,大部分程序都是从上往下从左向右一行一行执行的,但是赋值运算符比较特殊,
其是从右向左执行,先计算右边的内容,然后把结果赋值给左边的变量!
'''
# 1、单个变量赋值
num = 10
print(num)  # 10

# 2、同时为多个变量赋值
a, b, h = 2, 3, 5
# 等价于a = 2, b = 3, h = 5
print(a)
print(b)
print(h)

# 3、为多个变量赋予相同的值
num1 = num2 = 100
print(num1)
print(num2)
  • 输出
10
2
3
5
100
100
(4)复合赋值运算符

image-20231118203414612

'''
在Python中,算数运算符还可以与赋值运算符相结合 => 复合赋值运算符
计算原则:① 先算算数运算 ② 把得到的结果通过=赋值符号赋值给左边的变量
特别注意:在复合赋值运算符中,符号左边的必须是一个变量,否则会报错
'''
i = 1
i += 1  # i = i + 1
print(i)  # 2

num1 = 9
num1 %= 4  # num1 = num1 % 4
print(num1)  # 1

num2 = 2
num2 **= 3  # 2的3次方
print(num2)
  • 输出
2
1
8
(5)比较运算符

image-20231118204143645

'''
在Python中,比较运算符有以下几种情况:
>
<
>=
<=
==
!=
注意:比较运算符,返回的结果永远都是bool类型的数据
注意区分:= 和 == 区别
= : 赋值
== : 比较运算符,比较两边的变量或值是否相等
应用场景:通常需要配合if判断进行使用!
'''
num1 = 9
num2 = 4

print(num1 > num2)
print(num1 < num2)

print(num1 >= num2)
print(num1 <= num2)

print(num1 == num2)
print(num1 != num2)
  • 输出
True
False
True
False
False
True
(6)逻辑运算符

image-20231118204330575

'''
在Python中,逻辑运算符主要有三种情况:
① 逻辑与 => and符号,表达式1 and 表达式2,当两边表达式全部为True,则最终结果为True。如果有一方为False,
则最终结果为False
② 逻辑或 => or符号,表达式1 or 表达式2,当两边的表达式有一方为True,则最终结果为True。如果两边同时为False,
则最终结果为False
③ 逻辑非 => not bool布尔类型表达式,代表取反的含义。如果表达式返回的结果为True,添加了not以后就变成False。
如果bool布尔类型的表达式为False,则添加了not以后就变成True。
'''
a = 1
b = 2
c = 3

print((a > b) and (b > c))  # False and False => False
print((a < b) or (b < c))  # True or True => True
print(not (a > b))  # False => True
  • 输出
False
True
True
(7)短路运算
  • Python把0、空字符串”和None看成 False,其他数值和非空字符串都看成 True
  • 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是True,则整个计算结果必定取决与 b,因此返回 b。
  • 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是False,则整个计算结果必定取决于 b,因此返回 b。
  • Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
'''
短路运算原则:逻辑与以及逻辑或运算符的两边不一定都是布尔类型的数据,也可以是数值类型或者字符串类型。那最终结果???
记住:谁决定了这个表达式最终结果,则表达式就返回谁
在计算机底层:Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True
print(3 and 4)  # 3相当于True,4相当于True,最终结果为4
print(6 or 7)  # 6 or 7,6相当True,7相当于True,最终结果为6
'''
print(3 and 4 and 5)  # 5
print(5 and 6 or 7)  # 6
4 > 3 and print('hello world')  # hello world
  • 输出
5
6
hello world
(8)运算符的优先级

image-20231118210344569

(9)优先级特别说明
  • 虽然 Python 运算符存在优先级的关系,但我不推荐过度依赖运算符的优先级,这会导致程序的可读性降低。因此建议:

    • 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,可以尝试把它拆分来书写

    • 不要过于依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,应尽量使用( )来控制表达式的执行顺序

3、if选择结构

(1)了解if条件语句
  • 所谓的判断就是条件语句,即条件成立执行某些代码,条件不成立则不执行这些代码。
(2)if条件语句的基本语法
if True:
	print('条件成立执行的代码1')
	print('条件成立执行的代码2')
# 下方的代码没有缩进到if语句块,所以和if条件无关
print('我是无论条件是否成立都要执行的代码')
'''
其他编程语言中,if条件是这样编写的:
if(条件判断) {
    如果条件成立,则执行大括号中的内容
}
在Python语言中,其if基本语法:
if 条件判断:
    如果if条件判断成立(True),则执行下方的缩进代码
    下方的缩进代码可以有多行,只要条件判断成立,都会被执行
print('如果此代码与if结构平行,则代表同级关系,无论if条件是否成立,此代码都会被执行!')
'''
# 1、定义一个变量
age = 19
# 2、使用if判断,判断age年龄是否大于等于18岁(是否已成年)
if age >= 18:
    print('已成年,可以正常上网!')

print('我与if结构是同级关系,不受到if条件的影响,无论条件是否成立,我都会被执行!')
(3)上网案例演示
# 1、定义一个变量
age = int(input('请输入您的年龄:'))
# 2、判断age是否大于18岁
if age >= 18:
    print('已成年,可以上网')
(4)if…else…结构
'''
if...else结构:二选一结构,if条件判断,成立与否都要执行相关的代码
if 条件判断:
    条件判断成立,则执行if下方的缩进代码
else:
    如果条件不成立,则执行下方else中的缩进代码

特别注意:else语句后面没有任何条件,直接跟冒号
'''
age = int(input('请输入您的年龄:'))
if age >= 18:
    print('已成年,可以上网!')
else:
    print('未成年,进入青少年模式,回家写作业!')
(5)if…elif…else多重判断语句
if 条件1:
	条件1成立执行的代码1
	条件1成立执行的代码2
	...... 
elif 条件2:
	条件2成立执行的代码1
	条件2成立执行的代码2
	......
else:
	以上条件都不成立执行的代码
'''
为什么需要多分支结构?
答:因为日常业务中,经常需要进行多条件判断,为了解决这样的应用场景,引入多分支结构

基本语法:
if 条件判断1:
    如果条件判断1成立,则执行if中的缩进代码
elif 条件判断2:
    如果条件判断1不成立,条件判断2成立,则执行elif中的缩进代码
elif 条件判断3:
    如果条件判断1不成立,条件判断2也不成立,则执行条件判断3,如果条件成立,则执行elif中的缩进代码
    如果条件判断3不成立,则继续向下执行
...
else:  # 注意:else结构可以有也可以没有
    如果上方所有的if分支结构都不成立,则系统会自动执行else中的缩进代码

中国合法工作年龄为18-60岁,即:
① 如果年龄小于18的情况为童工,不合法;
② 如果年龄在18-60岁之间为合法工龄;
③ 大于60岁为法定退休年龄。
'''
# 1、定义一个变量age,用于接收外部传入进来的年龄信息
age = int(input('请输入您的年龄:'))
# 2、使用if多分支结构进行条件判断
if age < 18:
    print('您的年龄小于18岁,童工一枚!')
elif 18 <= age <= 60:  # 与age >= 18 and age <= 60完全等价
    print('您的年龄位于18~60周岁之间,合法工作年龄!')
else:  # 相当于elif age > 60:
    print('您的年龄大于60岁,已达到退休年龄!')
(6)if嵌套
if 条件1:
	条件1成立执行的代码
	条件1成立执行的代码
    
	if 条件2:
		条件2成立执行的代码
		条件2成立执行的代码
'''
案例:法律规定,车辆驾驶员的血液酒精含量小于 20mg/100ml 不构成酒驾;酒精含量大于或等于 20mg/100ml 为酒驾;酒精含量大于或等于 80mg/100ml 为醉驾。编写 Python 程序判断是否为酒后驾车。
需求分析:
第一个环节:先判断车辆驾驶员是否涉嫌酒驾
第二个环节:如果涉嫌酒驾,检查酒精含量是否大于等于80mg/100ml,代表醉驾,反之则代表酒驾
'''
proof = int(input('请输入车辆驾驶员每100ml血液中酒精含量:'))
# 第一个环节判断,判断酒精是否与大于等于20
if proof >= 20:
    # 涉嫌酒驾,还需要进一步判断,判断驾驶员到底是醉驾还是酒驾
    if proof >= 80:
        print('您的酒精含量严重超标,已涉嫌醉驾!')
    else:  # 隐藏条件 : 20 <= proof < 80
        print('您的酒精含量位于20mg ~ 80mg之间,已涉嫌酒驾!')
else:
    # 不涉嫌酒驾
    print('您酒精含量低于20mg,不涉嫌酒驾!')

4、猜拳游戏案例

'''
游戏名称:猜拳游戏,石头剪刀布
游戏角色:① 玩家 ② 电脑 (人机对战)
游戏要求:玩家手工出拳,可以从剪刀、石头、布中选择一个进行出拳,电脑随机出拳
游戏规则:两两比较,石头  管 剪刀,布   管 石头,剪刀 管 布
游戏情况:① 玩家获胜② 两者平局③ 电脑获胜
关键点:只需要判断什么情况下,玩家可以获胜即可
'''
# 1、定义一个变量player代表玩家角色,用于存储玩家的出拳信息
player = int(input('请输入您的出拳信息(0-石头,1-剪刀,2-布):'))
# 2、定义一个变量computer代表电脑角色,用于存储电脑的随机(遗留问题:如何随机出拳)出拳信息
computer = 1

# 3、根据游戏规则,判断谁输谁赢!
# player == 0 必须要求 computer == 1
# player == 1 必须要求 computer == 2
# player == 2 必须要求 computer == 0
if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player == 2 and computer == 0):
    print('玩家获胜')
elif player == computer:
    print('平局')
else:
    print('电脑获胜')

5、三目运算符

  • 三目运算符也叫三元运算符。
  • 语法:值1 if 条件 else 值2
'''
在Python中,三目运算符也叫三元运算符,其基本语法如下:
if 条件判断:
    条件成立则执行if缩进代码
else:
    条件不成立则执行else中的缩进代码

三目运算符:
值1 if 条件判断 else 值2

如果条件判断成立,则返回值1;如果条件判断不成立,则返回else中的值2
案例:求两个数中的最大值
'''
num1 = 10
num2 = 100

# if num1 > num2:
#     max = num1
# else:
#     max = num2

# 把以上代码改成三目运算符
max = num1 if num1 > num2 else num2
print(f'num1与num2中的最大值为{max}')

猜你喜欢

转载自blog.csdn.net/liyou123456789/article/details/135039133