一、对之前的内容进行补充
1.两个方法:join() 将多个内容拼接起来,把列表转化成字符串
spilt() 将字符串转化成列表
2.关于删除
1)删除列表的全部内容
方法一:用clear()
lis = ['李白','韩信','公孙离','马可波罗','云中君','裴钱虎']
lis.clear()
print(lis)
方法二:遍历删除
lis = ['李白','韩信','公孙离','马可波罗','云中君','裴钱虎']
for i in lis:
lis.remove(i)
print(lis)
这是删除不干净的,原因在于:每次删除都涉及到元素的移动。索引在变。所以不安全哦!
解决方法:利用映射,把要删除的东西做成一个新列表,循环新列表,删除老列表
lis = ['李白','韩信','公孙离','马可波罗','云中君','裴钱虎']
new_lis = []
for el in lis:
new_lis.append(el)
for el in new_lis:
lis.remove(el)
print(lis)
应用:删除指定的东西,如删除'林'
lis = ['林之平','林品如','欧阳修','杜甫','林允儿','白居易']
new_lis = []
for el in lis:
new_lis.append(el)
for el in new_lis:
if el.startswith('林'):
lis.remove(el)
# 删不干净的
# if el.startswith('林'):
# lis.remove(el)
print(lis)
2)for循环
对于列表是不能修改大小的,及不能增加、删除,但是可以进行修改。
对于字典也是。
二、set集合
1.特点:无序,不重复,可哈希。
不可变的数据类型是可哈希的,
可变的数据类型是不可哈希的。
2.set是dict类型的数据但不保存value,只保存key。所以set也用{}表示。
3.集合的交,并集。
4.利用set中的元素是不重复的,去掉重复的内容。
lst = [45, 5, "哈哈", 45, '哈哈', 50]
lst = list(set(lst)) # 把list转换成set, 然后再转换回list
print(lst)
5.set的增删改查
# set的增删改查
s = {'自来也','大蛇丸','纲手'}
# s.add('鸣人')
# s.add('佐助')
# print(s)
#
# s.update(('小樱','雏田','宁次')) #迭代更新
# print(s)
# item = s.pop() #不知道删除什么,所以返回值告诉你
# s.remove('大蛇丸') #都知道删除什么了,就不用返回值了
# print(s)
# print(item)
# 随机遍历
# for el in s:
# print(el)
作业1.输入一个三位数并判断是不是水仙花数。(如果一个三位数abc == a**3+b**3+c**3,则这个数是水仙花数。'**'表示幂)
作业2.给出一个纯数字列表. 请对列表进行排序(升级题)。
思路:
1)完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10
2)循环列表. 判断a[i]和a[i+1]之间的大小关系, 如果a[i]比a[i+1]大. 则进行互换. 循环结束的时候. 当前列表中最大的数据就会被移动到最右端.
3)想一想, 如果再次执行一次上面的操作. 最终第二大的数据就移动到了右端. 以此类推. 如果反复的进行执行相应的操作. 那这个列表就变成了一个有序列表.
作业3.完成彩票36选7的功能. 从36个数中随机的产生7个数. 最终获取到7个不重复的数据作为最终的开奖结果.
提示:随机数:from random import randint
randint(0, 20) # 0 - 20 的随机数
作业4. 税务部门征收所得税. 规定如下:
1). 收入在2000以下的. 免征.
2). 收入在2000-4000的, 超过2000部分要征收3%的税.
3). 收入在4000-6000的, 超过4000部分要征收5%的税.
4). 收入在6000-10000的, 超过6000部分要征收8%的税.
5). 收入在10000以上的, 超过部分征收20%的税.
注, 如果一个人的收入是8000, 那么他要交2000到4000的税加上4000到6000的税加上6000到8000的税.
收入 = 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8%
让用户输入它的工资,计算最终用户拿到手是多少钱.
作业1代码:
num = int(input('请输入一个三位数:'))
a = num//100 #存储这个数的百位数
b = num%100 #存储这个数的去掉百分数的数
c = b//10 #存储10位数
d = b%10 #存储个位数
if num == a**3 + c**3 +d**3:
print('这个数是水仙花数\n')
else:
print('这个数不是水仙花数\n')
作业2代码1:
num_lst = [9,1,8,3,5,6,4,7]
c = 0 #用来存储两个数互换的中间变量
for a in range(0,8):
for i in range(0,8):
if i<7:
if num_lst[i]>num_lst[i+1]:
c = num_lst[i]
num_lst[i] = num_lst[i+1]
num_lst[i+1] = c
print(num_lst)
对于这种方式,在任何一种语言都可以实现两数互换,但是在python中有一种更容易的方式, 代码:a,b = b,a
作业2代码2:
# 冒泡排序(使用两两相邻的数进行比较)快排,插入排序,归并排序,堆排序,希尔排序
for j in range(len(num_lst)):
for i in range(len(num_lst)-1):
if num_lst[i] > num_lst[i+1]:
num_lst[i],num_lst[i+1] = num_lst[i+1],num_lst[i] #python自有的两值互换
print(num_lst)
作业3代码:
#方法一:
from random import randint
# lst = []
# while len(lst) < 7:
# n = randint(1, 36)
# if not n in lst:
# lst.append(n)
# print(lst)
#方法二:
s = set()
while len(s) < 7:
n = randint(1,36)
s.add(n)
print(s)
作业4代码:
salary = int(input('工资多少元:'))
income = 0 #定义一个变量,用来存储收入
if salary <= 2000:
income = salary
print('收入为%d'%income)
elif salary <= 4000:
income = salary-(salary-2000)*0.03
print('收入为%d'%income)
elif salary <= 6000:
income = salary - 2000 * 0.03 - 2000*0.05
print('收入为%d' % income)
elif salary <= 10000:
income = salary - 2000 * 0.03 - (6000 - 4000) * 0.05 - (salary - 6000) * 0.08
print('收入为%d' % income)
else:
income = salary - 2000 * 0.03 - 2000 * 0.05 - (10000 - 6000) * 0.08 - (salary-10000)*0.2
print('收入为%d' % income)