大家好,欢迎来到IT知识分享网。
运算符就是专门用于告诉程序执行特定运算或逻辑操作的符号。表达式是指由常量、变量和运算符组成的一个算式。编写程序对数据进行处理,其实处理就是对数据实施各种各样的运算,搞懂运算符与表达式是我们编写程序的基础性工作,本次讲课笔记通过案例讲解各种运算符的用法以及正确书写Python表达式的注意事项。
一、算术运算符(Arithmetic Operator)
- Python中的算术运算符就是用来处理四则运算的符号,也是最简单和最常用的运算符号。
1、列表说明
2、注意事项
- 实除“/”,无论被除数和除数是否是整数,结果都是浮点数。
- 整除“//”,如果被除数与除数都是整数,结果就是一个整数,但是只要其中一个是浮点数,那么结果就是浮点数。
- 在进行取模(%)运算时,运算结果的正负取决于模数(%右边的数)的符号,与被模数(%左边的数)的符号无关。
- 注意运算优先级,∗ ∗ → − ( 负 ) → ∗ , / , / / , % → + , − **\rightarrow -(负) \rightarrow*,/,//, \% \rightarrow+,-∗∗→−(负)→∗,/,//,%→+,−。 如果要改变运算次序,那么需要加括号。
3、案例演示
任务1、成绩处理
输入三科STB、SQL、Python的成绩,计算SQL与Python的成绩差以及三科的平均分。
- Python语言是动态类型语言,无须像静态类型语言如Java一样需要先声明后使用。因此一个Python程序包含三个部分:输入部分、处理部分和输出部分,其中,处理部分是一个程序的核心,涉及解决问题的方法和步骤,即算法,在处理部分就会用到运算符、表达式与控制结构。
- 编写程序 – 成绩处理.py
# -*- coding: utf-8 -*-
“””
功能:成绩处理
“””
#输入部分
stb = float(input(‘输入STB成绩:’))
sql = float(input(‘输入SQL成绩:’))
python = float(input(‘输入Python成绩:’))
# 处理部分
difference = python – sql
average = (stb + sql + python) / 3
# 输出部分
print(‘======================’)
print(‘STB’, ‘SQL’, ‘Python’, sep=’\t’)
print(stb, sql, python, sep=’\t’)
print(‘======================’)
print(‘Python与SQL成绩差:{}’.format(difference))
print(‘三门课程的平均成绩:{}’.format(average))
- 输出三门功课成绩,使用sep参数指定制表符“\t”作为分隔符
- 运行程序,查看结果
- 大家可以看到,平均成绩的小数位数也实在太多了,如何设置平均分的小数位数?比如保留到小数点后面两位。利用Python内置函数round()就可以搞定。
课堂练习:带余除法
- 使用整除(//)与取模运算(%)
任务2、打印购物小票
指定折扣,输入购买商品单价与数量,输入顾客交费,结算时打印购物小票,计算此次购物总金额,顾客交费,商店找补,以及购物积分。
- 编写程序 – 打印购物小票.py
# -*- coding: utf-8 -*-
“””
功能:打印购物小票
“””
# 输入部分
discount = 0.8 # 8折优惠
price1 = float(input(“输入运动衫单价:”))
amount1 = float(input(‘输入运动衫购买数量:’))
price2 = float(input(“输入网球鞋单价:”))
amount2 = float(input(‘输入网球鞋购买数量:’))
price3 = float(input(“输入网球拍单价:”))
amount3 = float(input(‘输入网球拍购买数量:’))
payment = float(input(‘顾客实际交费:’))
# 处理部分
money = (price1 * amount1 + price2 * amount2 + price3 * amount3) * discount # 计算购物金额
change = payment – money; # 计算找钱
points = int(money // 33); # 计算购物积分
# 输出部分
print(‘***************消费单**************’)
print(‘%-8s%-6s%-6s%-6s’ %(‘购买物品’, ‘单价’, ‘数量’, ‘金额’))
print(‘%-8s%-8.2f%-8d%-8.2f’ %(‘运动衫’, price1, amount1, price1 * amount1))
print(‘%-8s%-8.2f%-8d%-8.2f’ %(‘网球鞋’, price2, amount2, price2 * amount2))
print(‘%-8s%-8.2f%-8d%-8.2f’ %(‘网球拍’, price3, amount3, price3 * amount3))
print(‘***********************************’)
print(‘折扣:{}折’.format(discount * 10))
print(‘消费总金额:¥{}’.format(round(money, 2)))
print(‘实际交费:¥{}’.format(payment))
print(‘找钱:¥{}’.format(round(change, 2)))
print(‘本次购物所获得的积分:{}’.format(points))
- 运行程序,查看结果
任务3、计算利息
假设你在银行存了1元钱,且银行存款利率达到了100%。问:如果银行每天都给你发利息,并且你把每天获得的利息做复利,经过一年后,你会多富有?
- 先算一下一年发一次利息的情况
( 1 + 1 1 ) 1 = 2 \displaystyle(1+\frac{1}{1})^1=2(1+11)1=2元,即一年后你有2元钱。 - 再来算一下一年发两次利息并采用复利的情况
( 1 + 1 2 ) 2 = 2.25 \displaystyle(1+\frac{1}{2})^2=2.25(1+21)2=2.25元 - 最后算银行每天都发利息并采用复利的情况
- ( 1 + 1 365 ) 365 = 2. \displaystyle(1+\frac{1}{365})^{365}=2.(1+3651)365=2.元
- 如果银行每分每秒都在付利息,我们也每分每秒复利,1年之后,我们的财富实际上是接近于e的,即2.。
- 编写程序 – 计算利息.py
- 运行程序,查看结果
- n的值越大,fv的值就越趋近于e
任务4、由卡号计算幸运数
输入会员卡号(假定4位数)、分解出各位数字,再把各位数字相加,得到幸运数字,然后利用幸运数字去抽奖。编写程序,如何由卡号得到幸运数字。
难点:如何把一个四位数拆分?
解决问题的思路:例如n = 3462
3426 = 3 * 1000 + 4 * 100 + 6 * 10 + 2
除了个位数2之外,其余的各位数都能被10整除,那就意味着2是3462除以10的余数,怎么表示?3462 % 10 = 2
个位数得到之后,我们希望去掉个位数,把四位数变成三位数,然后就可以采用类似的方法得到三位数的末尾数,其实就是四位数的十位数;那么怎么才能得到这样的三位数呢?3462 // 10 = 346
346 = 3 * 100 + 4 * 10 + 6 怎么得到末尾数呢? 346 % 10 = 6
然后又把346变成34,怎么做?346 // 10 = 34
34 = 3 * 10 + 4,怎么得到末尾数呢?34 % 10 = 4
然后又34变成3,怎么做?34 // 10 = 3
- 编写程序 – 由卡号计算幸运数.py
# -*- coding: utf-8 -*-
“””
功能:由卡号计算幸运数
“””
# 输入部分
id = int(input(“输入会员卡号(四位数):”))
# 处理部分
x1 = id % 10 # 取个位数
x2 = id // 10 % 10 # 取十位数
x3 = id // 100 % 10; # 取百位数
x4 = id // 1000 # 取千位数
lucky_number = x1 + x2 + x3 + x4 # 计算幸运数
# 输出部分
print(‘你的幸运数:{}’.format(lucky_number))
- 运行程序,查看结果
- 俗话说:条条道路通罗马。要获取四位整数的各位数字,还有其它方法,读者可以尝试不同的解决方法。下面给出另外一种处理方法。
- 基于幸运数的计算,我们可以编写幸运抽奖小程序
- 编写程序 – 幸运抽奖资格.py
# -*- coding: utf-8 -*-
“””
功能:幸运抽奖资格
“””
import random
id = int(input(“输入会员卡号(四位数):”))
x1 = id % 10 # 取个位数
x2 = id // 10 % 10 # 取十位数
x3 = id // 100 % 10; # 取百位数
x4 = id // 1000 # 取千位数
lucky_number = x1 + x2 + x3 + x4 # 计算幸运数
print(‘你的幸运数:{}’.format(lucky_number))
target = random.randint(1, 36)
print(‘目标幸运数:{}’.format(target))
if lucky_number == target:
print(‘恭喜你获得幸运抽奖资格!’)
else:
print(‘谢谢惠顾,希望下次有幸!’)
思考题: 改善程序
- 如果输入的卡号不是四位数,程序会出现什么异常情况?
- 应该如何改善这个程序,让它只处理输入四位数的情况?
- 我们这个拆分四位整数的方法能否推广到任意多位数呢?
任务5、计算机存储单位
- 计算机存储单位一般用bit、B、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB、CB、XB……来表示。其中,位 bit (比特)(Binary Digits) 存放一位二进制数,即 0 或 1,最小的存储单位。
- 不同存储单位的换算关系
1 Byte (B) = 8 bit
1 Kilo Byte (KB) = 1024 B
1 Mega Byte (MB) = 1024 KB
1 Giga Byte (GB)= 1024 MB
1 Tera Byte (TB)= 1024 GB
1 Peta Byte (PB) = 1024 TB
1 Exa Byte (EB) = 1024 PB
1 Zetta Byte (ZB) = 1024 EB
1 Yotta Byte (YB) = 1024 ZB
1 Bronto Byte (BB) = 1024 YB
1 Nona Byte (NB) =1024 BB
1 Dogga Byte (DB) =1024 NB
1 Corydon Byte (CB) = 1024 DB
1 Xero Byte (XB) = 1024 CB
- 编写程序 – 计算机存储单位.py
- 运行程序,查看结果
过去十年堪称是数据爆炸的十年。回顾2010年的行业报告时你会发现,2010年全球数据量刚刚突破1ZB,而2020年全球数据量预计将超过40ZB。面对数据量的指数级增长,存储市场可谓首当其冲。尤其在云计算、大数据、人工智能、5G、物联网、边缘计算大行其道的今天,数据如何存储的问题只是其一,数据价值如何深入挖掘更为突出。对于数据从存储到价值释放的转变,浪潮存储产品线总经理李辉认为,新数据时代已经到来。
二、赋值运算符(Assignment Operator)
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。它将运算符右边的值赋给左边的变量。
1、列表说明
2、注意事项
- 在Python中可以通过一条赋值语句对多个变量进行赋值。
- 在赋值运算符中,除了“=”,其它的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x + 3,再将运算结果赋值给变量x。其余的-=、*=、/=、%=赋值运算符都可依此类推。
3、案例演示
任务1、一次对多个变量赋值
- 多个变量赋相同的值
- 多个变量赋不同的值
任务2、使用复合赋值运算符
- 编写程序 – 演示复合赋值运算.py
- 运行程序,查看结果
三、关系运算符(Relational Operator)
比较运算符用来对两个数值或变量进行比较,其结果是布尔类型的True或False。
1、列表说明
2、注意事项
- 布尔型常量转换成整数:True -> 1;False -> 0
- 整数转换成布尔型常量:非零整数 -> True;零 -> False
- 空列表、空字典、空元素、空字符串转换成布尔型的False
- 任何表达式都可以作为判断条件,对于数值型而言,零表示False,非零表示True;对于字符串而言,空字符串表示False,非空字符串表示True
3、案例演示
- 利用关系运算符构建关系表达式,可以表示条件,用于选择结构和循环结构
任务1、年龄关卡
- 年满18周岁,欢迎访问;未满18周岁,旁边凉快!
- 编写程序 – 年龄关卡.py
# -*- coding: utf-8 -*-
“””
功能:年龄关卡
“””
age = int(input(‘输入你的年龄:’))
if age >= 18:
print(‘年满18周岁,欢迎访问!’)
else:
print(‘未满18周岁,旁边凉快!’)
- 运行程序,查看结果
任务2、求解一元二次方程
- 下面,我们只计算实数解,不去计算复数解,但要提示用户此方程没有实数解。
- 编写程序 – 求解一元二次方程.py
# -*- coding: utf-8 -*-
“””
功能:求解一元二次方程
“””
from math import sqrt
a = float(input(‘a = ‘))
b = float(input(‘b = ‘))
c = float(input(‘c = ‘))
delta = b**2 – 4 * a * c
if delta >= 0:
x1 = (-b + sqrt(delta)) / (2 * a)
x2 = (-b – sqrt(delta)) / (2 * a)
print(‘x1 = {}\nx2 = {}’.format(x1, x2))
else:
print(‘此方程没有实数解!’)
- 运行程序,查看结果
利用关系表达式可以表示一个简单条件,比如查找班上的男生,条件就是:性别 == “男”;查找成绩在90分以上的,条件就是:成绩 >= 90。但是,大家思考一个问题,如何要查找成绩在90分以上的男生,那么该如何将查询条件写成Python表达式呢?这就会用到Python的逻辑运算,包括非(not)、与(and)、或(or)。
四、逻辑运算符(Logical Operator)
逻辑运算符是用于对布尔类型的值或表达式进行操逻辑判断的符号,其返回值类型是布尔类型。
1、列表说明
- 与运算真值表
- 或运算真值表
- 非运算真值表
2、注意事项
- 三种逻辑运算的优先级别:not –> and –> or
3、案例演示
任务1、闰年判断
- 输入一个年份,判断它是闰年还是平年。
- 闰年能被4整除且不能被100整除,或者能被400整除
- 编写程序 – 闰年判断.py
# -*- coding: utf-8 -*-
“””
功能:闰年判断
“””
year = int(input(‘year = ‘))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print(‘{}是闰年。’.format(year))
else:
print(‘{}是平年。’.format(year))
- 可以修改一下闰年判断条件的逻辑表达式,用到三种逻辑运算符
- year % 100 != 0 等价于 not year % 100 == 0
- 运行程序,查看结果
最后,小编想说:我是一名python开发工程师,
整理了一套最新的python系统学习教程,
想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/52614.html