1. 【两个对象相加】+
锦囊01 数字相加
在Python中,经常会遇到使用“+”进行数值相加的情况,常用应用如下:
a = 10
b = 1
c = 2.0
d = 3.0
print(a+b) # 整数相加
print(c+d) # 浮点数相加
print(a+b) # 整数和浮点数相加
print(a+ .5) # 整数和省略零的浮点数相加
锦囊02 字符串相加
在Python中,如果”+”号的两侧是字符串类型数据,则表示将2个字符串进行拼接。常用应用如下:
s1 = 'mingri'
s2 = 'soft'
print(s1+s2) # 字符串拼接
print(s1+' '+s2) # 2个字符串间添加空格
print(s1+'\n'+s2) # 2个字符串间添加换行符
锦囊03 元组相加
当元组使用“+”相加时,返回合并后的元组。常用应用如下:
t1 = (1,2,3)
t2 = (4,5,6)
t3 = ('a','b','c')
t4 = ('d','e','f')
t5 = (('o','p','q'),('x','y','z'))
print(t1+t2)
print(t1+t2+t3+t4)
print(t1+t2+t3+t4+t5)
锦囊04 列表相加
当列表中使用“+”相加时,返回合并后的列表。常用应用如下:
l1 = [1,2,3]
l2 = [4,5,6]
l3 = [['a','b','c']]
l4 = [['d','e','f']]
l5 = [['o','p','q'],('x','y','z')]
print(l1+l2)
print(l3+l4)
print(l1+l2+l3+l4+l5)
说明:字典和集合不能使用“+”进行操作。
2. 【得到负数或是一个数减去另一个数】-
锦囊01 作为负号使用
作为负号使用时,注意负负为正。常用应用如下:
num1 = 1
num2 = -2
num3 = -3.0
print(-num1)
print(num2)
print(-num3)
锦囊02 作为减号使用
作为减号使用时,常用应用如下:
num1 = 5
num2 = 1
num3 = 10
num4 = 8.0
print(num1-num2)
print(num1-num3)
print(num1-num4)
3. 【两个数相乘或是返回一个被重复若干次的字符串】*
锦囊01 作为乘号使用
作为乘号使用时,常用应用如下:
num1 = 3
num2 = 4
num3 = 5.5
num4 = -6
print(num1 * num2)
print(num1 * num3)
print(num1 * num4)
锦囊02 对字符串使用*号
使用“*”作为重复符号,打印一个等腰三角形。代码如下:
print(' '*2+'△'+' '*2)
print(' '+'△'*3+' ')
print('△'*5)
锦囊03 对元组使用*号
“*”号作为重复符号,同样可以作用在元组上。
l1 = (1,2,3)
l2 = (('a','b','c'),('d','e','f'))
print(l1 * 3)
print(l2 * 3)
锦囊04 对列表使用*号
“*”号作为重复符号,同样可以作用在列表上。
l1 = [1,2,3]
l2 = [['a','b','c']]
board = [['-'] * 3 for i in range(3)] # 使用列表解析式
print(l1 * 3)
print(l2 * 3)
print(board)
4. 【两个数相除】/
锦囊01 实现人民币和美元的转换
已知1美元兑换人民币6.78元,编写程序实现人民币转换成美元的功能。代码如下:
exchange_rate = 6.78 # 汇率
RMB = input('请输入人民币金额:')
try:
US = float(RMB) / exchange_rate
print('转化后的美元是:{:.2f}'.format(US))
except ValueError:
print('请输入正确的数值类型。')
5. 【返回商的整数部分(向下取整)】//
锦囊01 将描述“秒”转化为“分 秒”的格式
在考试系统中需要记录用户的答题时间。通常答题时间是以秒为单位记录的。比如用时“100”秒,为了增加可读性,需要将“100秒”转化为“1分钟40秒“的形式。如下代码,可以实现该功能:
def second_format(seconds):
minutes = seconds // 60 # 计算分钟数
if minutes > 0:
seconds = seconds - minutes * 60 # 计算剩余秒数
return minutes,seconds
seconds = input('请输入秒数:')
result = second_format(int(seconds))
print(f'{seconds}秒可以转化为{result[0]}分{result[1]}秒')
6. 【返回除法的余数】%
锦囊01 负数使用%求余数
计算下面的除法求余结果:
result1 = 8 % 3
result2 =-8 % 3
result3 = 8 % -3
print(f"8 % 3 的结果是:{result1}")
print(f"-8 % 3 的结果是:{result2}")
print(f"8 % -3 的结果是:{result3}")
上面的结果可能与很多人的预期不符,这个结果是由Python机制决定的。在Python中取余数遵循下面的公式:
r=a-n*[a//n]
对于 8%3 ,其中a=8,n=3。r=8-3*(8//3),所以结果为2;对于 -8%3,r = -8 - 3*(-8//3),结果为1;对于8 % -3,r= 8 - (-3)*(8//-3),结果为-1。
注意:-8//3 计算时向下取整,结果为-3,而不是-2。
锦囊02 将描述“秒”转化为“时 分 秒”的格式
在考试系统中需要记录用户的答题时间。通常答题时间是以秒为单位记录的。比如用时“3800”秒,为了增加可读性,需要将“100秒”转化为“1分钟40秒“的形式。如下代码,可以实现该功能:
def second_format(seconds):
minutes = seconds // 60 # 计算分钟数
seconds = seconds % 60
hours = minutes // 60
minutes = minutes % 60
return hours,minutes,seconds
seconds = input('请输入秒数:')
result = second_format(int(seconds))
print(f'{seconds}秒可以转化为{result[0]}小时{result[1]}分{result[2]}秒')
7. 【返回一个数的幂】**
锦囊01 用2种方式求x的y次幂
用2种方式求x的y次幂,代码如下:
# 计算x的y次幂
x = 10
y = 3
# 方式1
print(x ** y)
# 方式2
import math # 导入math模块
print(math.pow(x,y)) # 返回类型为浮点型
8. 【简单的赋值】=
锦囊01 不同类型数据的赋值
不同类型数据的赋值,代码如下:
# 常用数据类型赋值
num = 123
str_val = "mrsoft"
tuple_val = (1,2,3)
list_val = [1,2,3]
dict_val = {"name":"andy","age":18}
set_val = {1,2,3}
def fun():
print("函数赋值")
f = fun # 函数赋值
f() # 调用函数
class Student:
def __init__(self):
print("类赋值")
s = Student # 类赋值
s() # 类的实例化
9. 【加法赋值】+=
锦囊01 计算字典中各值的累加和
不同类型数据的赋值,代码如下:
basket = {"fruit":45.80,"meat":20.45,"juice":10} # 购物车数据
total = 0 # 初始化总价
# 方式1:
for item in basket.values():
total += item
print(f'方式1的计算结果为{total}')
# 方式2:
total = sum(basket.values())
print(f'方式2的计算结果为{total}')
10. 【减法赋值】-=
锦囊01 “逢7过”游戏
“逢7过”是一个锻炼头脑敏捷性的益智游戏。游戏规则是大家围成一圈,然后从1开始依序喊数字,如果数字是7或者7的倍数,就不能喊出这个数字,必须做一个动作。使用Python 计算出200以内的7的倍数。例如7、14、28等。代码如下:
value = 200 # 初始值
l = []
while value > 0 :
if value % 7 == 0 : # 如果被7整除
l.append(value) # 添加到列表
value -= 1
l.reverse() # 列表反转
print(l) # 输出列表
11. 【乘法赋值】*=
锦囊01 多种类型使用乘法赋值
对不同类型数据使用乘法赋值运算,代码如下:
# 数字
num = 5
num *= 3
print(num)
# 字符串
str_val = "mrsoft"
str_val *= 3
print(str_val)
# 元组
tuple_val = (1,2,3)
tuple_val *= 3
print(tuple_val)
# 列表
list_val = [1,2,3]
list_val *= 3
print(list_val)
12. 【除法赋值运算符】/=
锦囊01 用2种方式对列表中的元素批量相除
对于列表list_value=[1,2,3,4,5],使用2种方式将list_value中的每个元素除以2。代码如下:
list_value = [1,2,3,4,5]
# 方式1:
new_value = [i/2 for i in list_value] # 使用列表解析式
print(new_value)
# 方式2:
new_value = []
for i in list_value:
i /= 2 # 除法赋值运算
new_value.append(i) # 追加到新列表
print(new_value)
13. 【取模赋值运算符】%=
锦囊01 用2种方式对列表中的元素批量取模
判断一个列表中的每一个元素的奇偶性。例如list_value=[10,11,12,13,14,15],输出结果应该为new_value=[‘偶数’, ‘奇数’, ‘偶数’, ‘奇数’, ‘偶数’, ‘奇数’],代码如下:
list_value = [10,11,12,13,14,15]
new_value = []
for i in list_value:
i %= 2 # 取模运算
val = '奇数' if i else '偶数' # 三元表达式
new_value.append(val) # 追加到新列表
print(new_value)
14. 【幂赋值运算符】**=
锦囊01 用2种方式对列表中的元素批量求平方
对于列表list_value=[1,2,3,4,5],使用2种方式将list_value中的每个元素求平方。代码如下:
list_value = [1,2,3,4,5]
# 方式1:
new_value = [i**2 for i in list_value] # 使用列表解析式
print(new_value)
# 方式2
new_value = []
for i in list_value:
i **= 2 # 幂赋值操作
new_value.append(i) # 追加到新列表
print(new_value)
15. 【取整除赋值运算符】//=
锦囊01 用2种方式对列表中的元素批量取整数赋值
对于列表list_value=[1,2,3,4,5],使用2种方式将list_value中的每个元素除以2取整。代码如下:
list_value = [1,2,3,4,5]
# 方式1:
new_value = [i//2 for i in list_value] # 使用列表解析式
print(new_value)
# 方式2
new_value = []
for i in list_value:
i //= 2
new_value.append(i) # 追加到新列表
print(new_value)
16. 【等于运算符】==
锦囊01 == 运算符与is 的区别
“==”运算符用于比较对象的值是否相等,如果值相等即返回True,而is既要判断值是否相等,又要内存地址相等。它们之间的区别可以通过如下代码来验证:
num1 = 1000
num2 = 1000
print(num1 == num2)
print(num1 is num2)
str1 = 'mingrisoft'
str2 = 'mingrisoft'
print(num1 == num2)
print(num1 is num2)
说明:上面的代码,需要在Python命令提示符下,一行一行输入运行,才是上面的结果。在Pycharm或IDLE中,将上面的代码保存为文件运行,结果输出全部为True。这是因为Pycharm中把整数存储为常量,因此在同一上下文中对同一整数的赋值将产生完全相同的结果。
17. 【不等于运算符】!=
锦囊01 遍历列表输出不等于某值的信息
获取公司列表中,英文名不是”mrsoft”的所有公司的中文名。代码如下:
list_val = [['mrsoft','明日科技有限公司'],
['baidu','百度在线网络技术有限公司'],
['tencent','深圳市腾讯计算机系统有限公司'],
['alibaba','阿里巴巴网络技术有限公司']]
list_new = []
for (name, val) in list_val: # 遍历列表
if name != "mrsoft": # 判断不等于
list_new.append(val) # 添加到新列表
print(list_new)
18. 【大于运算符】>
锦囊01 比较相同类型数据的大小
比较数字、字符串、元组、列表和集合类型数据的大小。代码如下:
print(2 > 1) # True
print(2.3 > 1.4) # True
print('b' > 'a') # True
print('abc' > 'abb') # True
print((1,2,3) > (1,2,2)) # True
print([1,2,3] > [1,2,2]) # True
print({1,2,3} > {1,2,2}) # True
说明:比较大小时,先比较第一个元素,ASCII码值大的元素比较大。如果第一个元素相同,则比较第二个元素,以此类推。
19. 【小于运算符】<
锦囊01 将倒序索引转化为正序索引
在对序列进行切片操作时,即可以正序切片,也可以倒序切片。编写一个函数,用于计算倒序的索引在正序的位置。代码如下:
def fixIndex(object, index):
if index < 0:
# 如果index在右侧,则将其转化为左侧
index += len(object) + 1
return index
list_val = [1,2,3,4,5]
index1 = fixIndex(list_val,-1)
index2 = fixIndex(list_val,-2)
index3 = fixIndex(list_val,-3)
index4 = fixIndex(list_val,-4)
index5 = fixIndex(list_val,-5)
print(f'倒数第1个是正数第{index1}个')
print(f'倒数第2个是正数第{index2}个')
print(f'倒数第3个是正数第{index3}个')
print(f'倒数第4个是正数第{index4}个')
print(f'倒数第5个是正数第{index5}个')
锦囊02 获取列表中最小的元素
在一个全是数字的列表中,获取值最下的元素。代码如下:
numbers = [3,6,2,8,4,10]
min = numbers[0]
for number in numbers:
if number < min:
min = number
print(f'列表中最小的元素是{min}')
20. 【大于等于运算符】>=
锦囊01 判断考试成绩是否及格
语文考试及格成绩为60分,如果成绩大于或者等于60分,则成绩及格,否则成绩不及格。实现该功能的代码如下:
score = float(input('请输入你的分数:'))
if score >= 60:
print('恭喜你,考试通过!')
else:
print('很遗憾,没有通过考试')
21. 【小于等于运算符】<=
锦囊01 用2种方式获取偶数
使用2种方式获取20以内的偶数。代码如下:
# 方式1:使用列表解析式
list_val = [i for i in range(21) if i % 2 == 0]
print(list_val)
# 方式2:使用循环遍历
list_val = []
num = 0
while num <= 20:
if num % 2 == 0: # 判断能否被2整除
list_val.append(num) # 将偶数追加到列表
num += 1 # 变量自增
print(list_val)
22. 【与运算符】and
锦囊01 判断电梯是否超载
电梯设置规定:如果承载人不超过10人,且总重量不超过1000千克,可以正常使用,否则提示超载。实现上述功能的代码如下:
num = int(input('请输入人数:'))
weight = float(input('请输入总重量:'))
if num <= 10 and weight <= 1000:
print('电梯正常运行')
else:
print('电梯超载')
23. 【或运算符】or
锦囊01 使用or运算符判断某个区间之外的数据
使用“or”运算符代替“>=”运算符,判断是否为需要重点关注的产品。代码如下:
num = float(input('请输入产品销量:'))
if num > 500 or num < 20:
print('该产品需要重点关注!')
else:
print('该产品销量平稳!')
24. 【非运算符】not
锦囊01 判断输入的值是否为整数
判断用户输入的值是否为整数,代码如下:
str_val = input('请输入整数:')
if not str_val.isdigit():
print('格式错误')
else:
print(f'你输入的整数是{str_val}')
25. 【按位与运算符】&
锦囊01 输出按位与的结果
输出下面二进制按位与的结果,代码如下:
a = 0b00111100
b = 0b00001101
print(a & b)
26. 【按位或运算符】|
锦囊01 输出按位或的结果
输出下面二进制按位或的结果,代码如下:
a = 0b00111100
b = 0b00001101
print(a | b)
27. 【按位异或运算符】^
锦囊01 输出按位异或的结果
输出下面二进制按位异或的结果,代码如下:
a = 0b00111100
b = 0b00001101
print(a ^ b)
28. 【按位取反运算符】~
锦囊01 输出按位取反的结果
输出下面二进制按位取反的结果,代码如下:
a = 0b00111100
print(~a)
29. 【左移动运算符】<<
锦囊01 输出左移动运算的结果
输出下面二进制向左移动的结果,代码如下:
a = 0b00111100
print(f'a的值是{a}')
print(f'a移动2位的结果是{a << 2}')
print(f'a移动3位的结果是{a << 3}')
30. 【右移动运算符】>>
锦囊01 输出左移动运算的结果
输出下面二进制向右移动的结果,代码如下:
a = 0b00111100
print(f'a的值是{a}')
print(f'a移动2位的结果是{a >> 2}')
print(f'a移动3位的结果是{a >> 3}')
31. 【在指定的序列中查找】in
锦囊01 判断字符是否在字符串中
使用“in”操作符判断某个字符是否在字符串中,代码如下:
str_val = 'mrsoft'
print('m' in 'mrsoft')
print('mr' in 'mrsoft')
print('mt' in 'mrsoft')
锦囊02 判断元素是否在元组中
使用“in”操作符判断某4E2A元素是否在元组中,代码如下:
tuple_val = (1,(2,3),4,5)
print(1 in tuple_val)
print((4,5) in tuple_val)
print((2,3) in tuple_val)
锦囊03 判断元素是否在列表中
使用“in”操作符判断某个元素是否在列表中,代码如下:
list_val = [1,(2,3),4,5]
print(2 in list_val)
print([4,5] in list_val)
print((2,3) in list_val)
锦囊04 判断元素是否在字典中
使用“in”操作符判断某个元素是否在字典中,代码如下:
dict_val = {'name':'andy','age':18}
print('name' in dict_val)
print('age' in dict_val)
print('andy' in dict_val)
锦囊05 判断元素是否在集合中
使用“in”操作符判断某个元素是否在集合中,代码如下:
set_val = {1,2,3,'mrsoft',(1,2,3)}
print(1 in set_val)
print((1,2) in set_val)
print('mrsoft' in set_val)
print((1,2,3) in set_val)
32. 【在指定的序列中查找】not in
锦囊01 判断字符串信息是否合法
在注册网站时,需要用户填写“真实姓名”、“手机号”和“密码”3个字段。使用“not in”操作符,完成判断用户填写的注册信息是否正确,代码如下:
res = []
# 判断是否填写完全
if 'truename' not in res or 'phone' not in res or 'password' not in res:
print('必须填写真实姓名、手机号和密码')
锦囊02 删除列表中的重复元素
使用not in删除列表中的重复元素。代码如下:
numbers = [2,2,4,6,3,4,6,1]
uniques = []
for number in numbers:
if number not in uniques:
uniques.append(number)
print(uniques)
33. 【判断两个标识是否引自同一个对象】is
锦囊01 判断空字符串、空元组和空列表是否为None
判断空字符串、空元组和空列表是否为None,代码如下:
def test_none(val):
if val is None:
print(f'{val} is None')
else:
print(f'{val} is not None')
test_none('')
test_none(())
test_none([])
34. 【判断两个标识是否引自同一个对象】is not
锦囊01 判断是否开启调试模式
判断空字符串、空元组和空列表是否为None,代码如下:
class Test():
def run(self,debug=None):
if debug is not None:
self.debug = bool(debug)
test = Test()
test.run(debug=True)
if test.debug:
print('调试模式已开启')
else:
print('调试模式已关闭')
锦囊02 使用is not 避免隐式判断错误
在if表达式中,if is和if not会把后面的对象自动隐式转化为布尔型数据。在某些情况下会导致难以发现的错误。例如下面的代码:
def pay(name,salary=None):
if not salary:
salary = 8
print(f'{name}的钟点工工薪水是{salary}元')
pay("Andy",0)
如果调用pay(“Andy”,0)会打印什么呢?
Andy的钟点工工薪水是8元
这是为什么?因为函数接受salary参数时,为其赋值0。此时,if not salary为True,所以继续执行if语句。下面使用is not对函数进行修改,避免隐式转换导致的错误。代码如下:
def pay(name,salary=None):
if salary is None:
salary = 8
print(f'{name}的钟点工工薪水是{salary}元')
pay("Andy",0)
运行结果如下:
Andy的钟点工工薪水是0元