代码复制请勿使用火狐浏览器,格式会出错!如果对代码有疑问可以在下方评论区提问
7-1 jmu-python-随机生成密码
新建一个字符列表,这个列表中的内容从前到后依次包含小写字母、大写字母、数字。 形如['a',...,'z','A',...,'Z','0',...'9']
建议:使用代码生成该字符列表。
分别输入随机数的种子x(整型),随机生成的密码个数n,每个密码长度m。
每个密码包含的m个字符是从上述字符列表中随机抽取 。
注意:本题不要用sample函数,否则答案错误。
输入格式:
种子x (注意:需将x转换为整数型再进行设置)
密码个数n
每个密码的长度m
输出格式:
n行密码、每行m位。
输入样例:
1
10
8
输出样例:
iK2ZWeqh
FWCEPyYn
gFb51yBM
WXaSCrUZ
oL8g5ubb
bPIa84yR
nBUbHoWC
8FJowoRo
WD8s7bA1
6J7PglOU
代码示例
#生成字符列表
list=[]
#小写字母
for i in range(97,123):
list.append(chr(i))
#大写字母
for i in range(65,91):
list.append(chr(i))
#数字
for i in range(48,58):
list.append(chr(i))
seed=int(input())
n=int(input())
m=int(input())
import random
random.seed(seed)
for i in range(n):
password=''
for j in range(m):
index=random.randint(0,len(list)-1)
password+=list[index]
print(password)
该代码首先生成字符串列表,然后通过random函数来生成随机数,并调用‘seed’函数来设置种子。
7-2 删除重复元素
对于给定的数列,要求把其中的重复元素删去再从小到大输出。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先输入一个整数n(1≤n≤100),再输入n个整数。
输出格式:
对于每组测试,从小到大输出删除重复元素之后的结果,每两个数据之间留一个空格。
输入样例:
1
10 1 2 2 2 3 3 1 5 4 5
输出样例:
1 2 3 4 5
代码示例
list_a={}
t=int(input())
for i in range(t):
cishu,*number=list(map(int,input().split()))
number_2=set(number)
list_a=sorted(list(number_2))
print(' '.join(map(str,list_a)),)
该代码使用了set()这一代码,该代码可以对输入的字符串进行去重操作,并使用了sorted代码实现列表的排序
7-3 n马n担问题
有n匹马,驮n担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少匹? (某种马的数量可以为0)
输入格式:
测试数据由多组,处理到文件尾。每组测试输入一个正整数n(8≤n≤1000)。
输出格式:
对于每组测试,逐行输出所有符合要求的大、中、小马的匹数。要求按大马数从小到大的顺序输出,每两个数字之间留一个空格。
输入样例:
20
输出样例:
1 5 14
4 0 16
代码示例
while True:
try:
n=int(input())
for i in range(n//3+1): #枚举大马数量
for j in range((n-3*i)//2+1): #枚举中马数量
k=n-i-j #计算小马数量
if i*3+j*2+k//2==n and k%2==0:
print(i,j,k)
except:
break
这是一种暴力枚举的思想,对大马数量进行枚举,然后枚举中马数量,最后计算小马数量,如果三种马的数量都是非负整数并且总担数位n,则说明则是一组解,从而输出。由于本题需要处理多组数据,因此可以使用while循环来不断读入数据,直到文件末尾为止,使用try-except来捕获异常,并在异常时退出。
7-4 均方差
求n个非负整数x1, x2 …… xn(xi为第i个元素)的均方差,公式如下:
junfangcha.png
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先输入一个整数n(1≤n≤100),再输入n个整数xi(0≤xi≤1000)。
输出格式:
对于每组测试数据,在一行上输出均方差,结果保留5位小数。
输入样例:
2
4 6 7 8 9
10 6 3 7 1 4 8 2 9 11 5
输出样例:
1.11803
3.03974
出处:
ZJUTOJ 1186
代码示例
import math
T = int(input())
for _ in range(T):
nums = list(map(int, input().split()))[1:]
avg = sum(nums) / len(nums)
ss = sum((x - avg) ** 2 for x in nums) / len(nums)
s = math.sqrt(ss)
print('{:.5f}'.format(s))
7-5 zust-sl7-1列表奇偶分家
输入一个列表,包含若干个整数(允许为空),然后将其中的奇数和偶数单独放在一个列表中,保持列表原有顺序不变。
输入格式:
输入一个列表。
输出格式:
分两行输出,第一行输出奇数序列,,第二行输出偶数序列,数据之间用逗号隔开。如果奇数或偶数列表为空,输出None。
输入样例:
在这里给出一组输入。例如:
[11,22,33,44,55,66]
输出样例:
在这里给出相应的输出。例如:
11, 33, 55
22, 44, 66
代码示例
x = input()
x1 = x.strip('[]') # 去除输入列表字符串的[]
x2 = x1.split(",") # 将字符串变为列表
a = []
b = []
for i in x2:
if i !='':
if int(i) % 2 == 0:
a.append(i)
else:
b.append(i)
if not b:
print("None")
else:
b = ', '.join(str(i) for i in b)
print(b)
if not a:
print("None")
else:
a = ', '.join(str(i) for i in a)
print(a)
要注意输入为空的时候,第八行if int(i) % 2 == 0:这条语句还会运行,所以要判断i=''时候的情况,防止代码错误
7-6 下标异常
输入一个非空字符串和一个索引值,输出字符串中,该索引值对应的字符。若发现异常,则输出“输入下标有误”
输入格式:
输入一个非空的字符串,再输入一个索引值(Python中可以是正向索引,也可以是反向索引)。
输出格式:
输出字符串中,该索引值对应的字符。若发现异常(如输入的索引值太大或太小,超出字符串的索引值范围;如输入的索引值为非整数等),则输出“输入下标有误”
输入样例:
在这里给出一组输入。例如:
Hello World
-4
输出样例:
在这里给出相应的输出。例如:
o
输入样例:
在这里给出一组输入。例如:
abcd
4
输出样例:
在这里给出相应的输出。例如:
输入下标有误
输入样例:
在这里给出一组输入。例如:
Good
?
输出样例:
在这里给出相应的输出。例如:
输入下标有误
代码示例
lonst=str(input())
try:
num=int(input())
print(lonst[num])
except:
print("输入下标有误")
7-7 Python猜数游戏
猜数字游戏编程:计算机随机产生一个0~100以内的正整数,用户输入一个数对其进行猜测,程序对其与随机产生的被猜数进行比较,并提示大了(“Too big”)、小了(“Too small”),还是相等(“Lucky You!”)。如果猜到,则结束程序。如果超过8次都没有猜到,则提示“Game Over!”,并结束程序。如下图:
捕获.PNG
提示:随机因子seed设置为1(防止调试错误)
输入格式:
每行给出一个用户的输入,直到猜中或者超过8次还没有猜中。
输出格式:
每次在一行中输出相应的猜测结果,直到输出猜对的结果“Lucky You!”或“Game Over!”则结束。
输入样例:
56
25
12
20
16
18
17
输出样例:
在这里给出相应的输出。例如:
Too big
Too big
Too small
Too big
Too small
Too big
Lucky You!
代码示例
import random
random.seed(1)
target=random.randint(0,100)
for i in range(8):
guess=input()
if guess.isdigit():
guess=int(guess)
if guess == target:
print('Lucky You!')
break
elif guess<target:
print('Too small')
else:
print('Too big')
else:
print('Game Over!')
7-8 zust-sy6-8求S=a+aa+aaa+…+aa…a(n个a)之值
输入两个整数n和a,求s=a+aa+aaa+…+aa…a(n个a)之值。
输入格式:
输入两个整数n和a(1≤n,a<10)
输出格式:
输出s之值
输入样例:
在这里给出一组输入。例如:
4 1
输出样例:
在这里给出相应的输出。例如:
1234
代码示例
anser=0
anser_2=0
n,a=map(int,input().split())
for i in range(n):
anser=anser*10+a
anser_2+=anser
print(anser_2)
7-9 JMU-Python-分段函数
本题目要求根据以下分段函数的定义,计算输入的x对应的y值,输出结果保留两位小数;如果输入的x是非数值型数据,输出'Input Error'。注意:使用math库
Snap6.bmp
输入格式:
在一行中输入x的值。
输出格式:
按“f(x) = result”的格式输出,其中x与result都保留两位小数,注意'='两边有空格。
如果输入的x是非数值型数据,输出:Input Error
输入样例1:
4
输出样例1:
f(4.00) = 3.39
输入样例2:
-6
输出样例2:
f(-6.00) = 0.00
输入样例3:
x
输出样例3:
Input Error
代码示例
import math
try:
x = eval(input())
result = (math.log(x, math.e) + math.sqrt(x)) if x > 0 else 0
print(f'f({x:.2f}) = {result:.2f}')
except:
print('Input Error')
停留在世界边缘,与之惜别