一、练习
1、在m月d日,为一串大写字母组成的英文语句加密
加密方式:
将26个英文字母(全为大写),外加空格,一共27个字符分成3组,每组9个。也就是ABCDEFGHI是第一组,JKLMNOPQR是第二组,STUVWXYZ是第三组(此处用代表空格)
先根据月份数m,以整个分组为单位进行循环左移,移动(m-1)次。
然后根据日期数d,对每个分组内的字符进行循环左移,移动(d-1)次。
以每个字母和空格代表的组数和组内位数输出每个字母或空格的密码
list0 = []
a = ord('A')#显示A的asicc码
for i in range(26):
list0.append(chr(a+i))
list0.append(' ')
while 1:
#输入月份和日期
s1=input('请输入月份和日期(两个数字以空格分开):')
#切割为有效操作数
s1=s1.split(' ')
try:
#判断输入月份和日期是否符合规范
m=int(s1[0])
d=int(s1[1])
if (1<=m<=12)and(1<=d<=31):
#输入符合规范的英文语句并转换为列表
s2 = input('请输入英文语句(仅大写字母):')
s2=list(s2)
for i in s2:
#寻找每个字符在列表中的位置
list1 = []
list1.append(list0.index(i))
#按照下标输出编码
#总分组除以三取余数x 01 13 22
list2=[1,2,3]
list3=[1,2,3,4,5,6,7,8,9]
for j in list1:
if 0<=j<=8:
a=list2[-(m-1)%3]
b=list3[j-(d-1)%9]
print('%d%d'%(a,b))
elif 9<=j<=17:
a=list2[1-(m-1)%3]
j-=9
b=list3[j-(d-1)%9]
print('%d%d'%(a,b))
else:
a=3-(m-1)%3
j-=18
b=list3[j-(d-1)%9]
print('%d%d'%(a,b))
else:
print('请输入有效字符')
except:
print('请输入有效字符')
print(type(s1[0]))
2、小明的女朋友最喜欢在网上买买买了,可是钱包里钞票有限,不能想买啥就买啥。面对琳琅满目的物品,她想买尽可能多的种类,每种只买一件,同时总价格还不能超过预算上限。于是她请小明写程序帮她找出应该买哪些物品,并算出这些物品的总价格。
输入规范:
每个输入包含两行。第一行是预算上限。第二行是用空格分隔的一组数字,代表每种物品的价格。所有数字都为正整数并且不会超过10000。
输出规范:
对每个输入,输出应买物品的总价格。
a=int(input())#输入预算
b=(input()).split(' ')#输入每种商品的价格
for i in range(len(b)):
b[i]=int(b[i])#将列表中的字符串转换为整型
i=0
while len(b)>=1:#判断列表长度
c=b[0]
for j in b:#找出列表b中最小值
if j<=c:
c=j
if i+c<=a:#判断加上最小值是否超出预算,没有则加上,超出则跳出循环
i=i+c
else:
break
b.remove(c)#删除上一个列表中的最小值
print(i)
二、集合set{}
集合中每个元素用逗号隔开
建立集合或者在强制类型转换时可以自动去重