杂记
- 序列类型包括字符串(str)、列表(list)、元组(tuple)、集合(set)和字典(dic),字符串也是个序列。
拼接
li = [1, 2, 3, 4]
# 在头部拼接
li[:0] = [0] # [0, 1, 2, 3, 4]
# 在末尾拼接
li[len(li):] = [5,7] # [0, 1, 2, 3, 4, 5, 7]
# 在中部拼接
li[6:6] = [6] # [0, 1, 2, 3, 4, 5, 6, 7]
# 给切片赋值的必须是可迭代对象
li[-1:-1] = 6 # (报错,TypeError: can only assign an iterable)
li[:0] = (9,) # [9, 0, 1, 2, 3, 4, 5, 6, 7],#元组必须有逗号
li[:0] = range(3) # [0, 1, 2, 9, 0, 1, 2, 3, 4, 5, 6, 7]
list.append与list.extend的区别
append是整建制地追加,extend是个体化扩编。
>>> lst = [1,2,3]
>>> lst.append(["qiwsir","github"])
>>> lst
[1, 2, 3, ['qiwsir', 'github']] #append的结果
>>> len(lst)
4
>>> lst2 = [1,2,3]
>>> lst2.extend(["qiwsir","github"])
>>> lst2
[1, 2, 3, 'qiwsir', 'github'] #extend的结果
>>> len(lst2)
5
eval()函数
>>>x = 7
>>> eval( '3 * x' )
21
>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> n=81
>>> eval("n + 4")
85
作业
1 列表反转
现在有a = [1,2,3,4,5,6]用多种方式实现列表的反转([6,5,4,3,2,1)并写出推导过程
#方法一,list.reverse()列表反转
a = [1,2,3,4,5,6]
a.reverse()
print(a)
'''
[6, 5, 4, 3, 2, 1]
#方法二,list.sort(reverse=True)列表降序排列
a = [1,2,3,4,5,6]
a.sort(reverse=True)
print(a)
'''
[6, 5, 4, 3, 2, 1]
'''
#方法三,list[::-1]列表负索引切片
a = [1,2,3,4,5,6]
print(a[::-1])
'''
[6, 5, 4, 3, 2, 1]
'''
#方法四 list(reversed(x))函数返回一个反转的迭代器,调用时需要使用list()
a = [1,2,3,4,5,6]
print(list(reversed(a)))
'''
[6, 5, 4, 3, 2, 1]
'''
#方法五,自定义函数,逆索引取值,循环加入列表
a = [1,2,3,4,5,6]
def reverse_list1(x):
ret_list1=[]
i=1
while i <= len(x):
ret_list1.append(x[-i])
i += 1
return ret_list1
print(reverse_list1(a))
'''
[6, 5, 4, 3, 2, 1]
'''
#方法六:自定义函数,数学算法
a = [1,2,3,4,5,6]
def reverse_list2(x):
ret_list=[]
i=0
while i < len(x):
ret_list.append(max(x)+min(x)-x[i])
i += 1
return ret_list
print(reverse_list2(a))
'''
[6, 5, 4, 3, 2, 1]
'''
2 猜数字
给用户9次机会猜1 - 10个数字随机来猜数字,如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误,最终结果要求用户怎么也猜不对
import random
i=0
list1=[1,2,3,4,5,6,7,8,9,10]
while i<9:
if i==0:
print('1-10 猜数字游戏,您有9次机会')
else:
print('您还有{}次机会'.format(9-i))
i += 1
player=int(input("请在1-10内选一个数字输入:"))
list1.remove(player)
computer=random.choice(list1)
print('不好意思,您猜错了,加油哦')
print('---------------------')
print('计算机选择的时:{}'.format(list1[0]))
3获取内容相同的元素
有两个列表list1 = [11,22,33],list2 = [22,33,44]获取内容相同的元素
#方法一:while循环
list1 = [11,22,33]
list2 = [22,33,44]
list3 =[]
i=0
while i<len(list1):
if list1[i] in list2:
list3.append(list1[i])
i+=1
print(list3)
'''
[22, 33]
'''
#方法二:for循环
list1 = [11,22,33]
list2 = [22,33,44]
list3 =[]
for i in list1:
if i in list2:
list3.append(i)
print(list3)
'''
[22, 33]
'''
#方法三:转化为集合,求交集
list1 = [11,22,33]
list2 = [22,33,44]
set1 = set(list1)
set2 = set(list2)
set3 = set1&set2
list3 = list(set3)
list3.reverse() #注意这里要REVERSE 一下
print(list3)
'''
[22, 33]
'''
4 教室分配
- 4.1 现在有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中,
import random
teacher=[]
teacher[::]="赵钱孙李周吴郑王"
i=0
while i<9:
room= [[], [], []]
for name in teacher:
num = random.randint(0, 2)
room[num].append(name)
print('第{}次随机分配'.format(i+1))
print(room)
print('--------------')
i+=1
'''
- 4.2教师分配升级版
现在有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中,要求,每个办公室至少有一位老师。
import random
teacher=[]
teacher[::]="赵钱孙李周吴郑王"
i=0
while i<10:
room= [[], [], []]
for name in teacher:
num = random.randint(0, 2)
room[num].append(name)
if room[0]==[] or room[1]==[] or room[2]==[]:#判断如果三个教室中有任何一个空教室
continue#跳过循环
print('第{}次随机分配'.format(i+1))
print(room)
print('--------------')
i+=1
#伪随机分配(前三次分配固定了)
import random
teacher=[]
teacher[::]="赵钱孙李周吴郑王"
i=0
while i<9:
room= [[], [], []]
t_time=0
for name in teacher:
if t_time<=2:
room[t_time].append(name)
else:
num = random.randint(0, 2)
room[num].append(name)
t_time+=1
print('第{}次随机分配'.format(i+1))
print(room)
print('--------------')
i+=1
‘’’
5账号密码验证
要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
-用户名长度6-20,用户名必须以字母开头
-密码长度至少6位,不能为纯数字,不能有空格
def user_check():
global user_name
user_name=input('请输入用户名:')
#print(user_name[0].encode())
#print(user_name[0].encode().isalpha())
if len(user_name) not in range(6, 21):
print('用户名长度限制6-20,请重新输入')
user_check()
elif user_name[0].encode().isalpha() == False:
print('首字母必须为字母,请重新输入')
user_check()
else:
pw_check()
def pw_check():
global user_pw
user_pw=input('请输入密码:')
if len(user_pw) <6:
print('密码长度至少6位,请重新输入')
pw_check()
elif user_pw.isdigit():
print('密码不能为纯数字,请重新输入')
pw_check()
elif ' ' in user_pw:
print('密码不能有空格,请重新输入')
pw_check()
else:
print('恭喜您,注册成功!\n您的用户名是:{},密码是:{}'.format(user_name,user_pw))
user_check()