(本练习运用之前的知识点,会持续更新)
① 要求: 截尾数组的平均数、众数、中位数。
def mode(l):#众数
d, key, value = {l[0]:1},l[0], 1
for i in range(1,len(l)):
if(l[i-1] != l[i]): value,key = 1,l[i]
else : value += 1
d.update({key:value})
return list(d.keys())[list(d.values()).index(max(d.values()))]
def median(l): #中位数
if (len(l)%2 == 0):
return l[len(l)//2]+l[len(l)//2+1]
else:
return l[len(l)//2]
l1 = sorted([eval(x) for x in input("请输入一串数字,以逗号分隔:\n>>>").split(",")])#输入数字并排序
l2 = [l1[x] for x in range(1,len(l1)-1)] #去除最大最小值
print(f"去除最大最小值后,您的输入是:{l2}")
aver_l2 = sum(l2)/len(l2) #平均数
print("中位数是{}".format(median(l2)))
print("平均数是{}".format(aver_l2))
print("众数是{}".format(mode(l2)))
② 要求:生成随机验证码并验证。
import random
import itertools
l = [chr(random.choice(list(itertools.chain(range(48,57),range(65,90),range(97,122))))) for x in range(6)]
stri = "".join(l)
print(f"您收到验证码:{stri}")
k = False
while (k == False):
instri = input("请输入验证码:")
k = instri==stri
print(["输入错误","输入正确"][k])
③ 要求:输入10进制数,转化成R进制
decNum = int(input("Input the decimal number:"))
R = int(input("Input the Conversion Radix:"))
ListR = []
temp = decNum
i = 0
while(temp>=1):
ListR.append(temp%R)
temp = int(temp/R)
ListR.reverse()
dict = {0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,10:"A",11:"B",12:"C",13:"D",14:"E",15:"F",16:"G",17:"H",18:"I",19:"J",20:"K",21:"L",22:"M",23:"N",24:"O",25:"P",26:"Q",27:"R",28:"S",29:"T",30:"U",31:"V",32:"W",33:"X",34:"Y",35:"Z"}
print(f'The number converses from {decNum}D to Radix"{R}" is ',end ="" )
for k in range(len(ListR)):
print(dict.get(ListR[k]),end = "")
④ 要求:n阶汉诺塔的解法
def hanoi(n,x,y,z):
if n == 1:
print(f"{x}→{z}",end='\t')
else:
hanoi(n-1,x,z,y)
print(f"{x}→{z}",end='\t')
hanoi(n-1,y,x,z)
n = int( input("请输入阶数:"))
hanoi(n,'A','B','C')