代码复制请勿使用火狐浏览器,格式会出错!如果对代码有疑问可以在下方评论区提问


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')