站点图标 AI技术聚合

Python123Python语言程序设计2021期末考试题库(编程题答案)

《沉默的羔羊》之最多单词
附件是《沉默的羔羊》中文版内容,请读入内容,分词后输出长度大于2且最多的单词。如果存在多个单词出现频率一致,请输出按照Unicode排序后最大的单词。

import jieba
txt = open("沉默的羔羊.txt","r").read()
word = jieba.lcut(txt)
d = {}
for w in word:
    d[w] = d.get(w,0)+1
maxc,maxw = 0,""
for k in d:
    if d[k]>maxc and len(k)>2:
        maxc = d[k]
    if d[k]==maxc:
        maxw = k
print(maxw)

输出一串字符对应的Unicode值
获得用户输入的一个字符串,输出每个字符对应的Unicode值,这些值一行输出,采用逗号分隔,最后没有逗号。请完善代码。
s = input(“”)#输入一个字符串
ls = []for c in s:
_____①_____print()

s = input("")#输入一个字符串
ls = []
for c in s:
    ls.append(str(ord(c)))
print(','.join(ls))

CSV 格式数据清洗
附件是一个 CSV 文件,其中每个数据前后存在空格,请对其进行清洗,要求如下:
去掉每个数据前后空格,即数据之间仅用逗号 (,) 分割;
清洗后打印输出。

with open('data.csv', 'r', encoding='utf-8') as f:
    s = f.read()
    s = s.replace(" ","")
    print(s)
f.close()

文本字符分布
分析附件 data.txt 文件的字符分布,即每个字符对应的数量。‬
按照 字符:数量 显示,每行一个结果,如果没有出现该字节则不显示输出,字符采用 Unicode 编码升序排列。

f=open("data.txt", "r")
s = f.read()
c = dict()
for i in  s:
    if i in c:
        c[i]+=1
    else:
        c[i]=1
c_s = sorted(c.items(),key=lambda x:x[0],reverse=False)
for key,value in c_s:
print("{}:{}".format(key,value))

十二星座
编写程序,读入 CSV 文件中数据,循环获得用户输入,直至用户输入 “exit” 退出。根据用户输入的星座名称,输出此星座的出生日期范围及对应字符形式。如果输入的星座名称有误,请输出“输入星座名称有误!”。

f = open("SunSign.csv","r")
ls = []
for line in f:
    line = line.replace("\n","")
    ls.append(line.split(","))
while True:
    s = input()
    s.strip()
    f = 0
    if(s=="exit"):
        break
    for line in ls:
        if s == line[0]:
            f = 1
            print("{}座的生日位于{}-{}之间".format(chr(eval(line[3])),line[1],line[2]))
    if f==0:
        print("输入星座名称有误!")

凯撒密码B

s = input()
C =""
for P in s:
    if 'a'<= P <= 'z':
        C += chr( ord('a') + ((ord(P)-ord('a')) + 3 )%26 )
elif 'A'<= P <='Z':
C += chr( ord('A') + ((ord(P)-ord('A')) + 3 )%26 )
else:
C += P
print(C)

列表元素积

ls = eval(input(""))
s = 1
lt = []
for i in range(len(ls)):
    temp = ls[:]
    temp.pop(i)
    for j in temp:
        s *= j
    lt.append(s)
    s = 1
print(lt)

斐波拉契数列的前n项

def fib(n):
    if (n == 0):
        return 0
    if (n == 1):
        return 1
    return fib(n-1) + fib(n-2) 

n=int(input()) #int函数将input()接收到的字符串转成整数
if n <= 0:
    print("Error")
else:
    for i in range(n):
        print(fib(i))

中文词语逆序

import jieba
words = jieba.lcut(input())
for i in range(len(words)-1,-1,-1):
print(words[i],end='')

def getNum(): #获取用户不定长度的输入
    numStr = input()
    num = list(eval(numStr))
    return num

def mean(numbers):  #计算平均值
    s = 0.0;
    for num in numbers:
        s = s + num;
return s/len(numbers);

基本统计值计算
获取以逗号分隔的多个数据输入(输入为一行),计算基本统计值(平均值、标准差、中位数)‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬除中位数外,其他输出保留小数点后两位。

def dev(numbers, mean): #计算标准差
    sdev = 0.0
    for num in numbers:
        sdev = sdev + (num - mean)**2
    return pow(sdev / (len(numbers)-1), 0.5)

def median(numbers):    #计算中位数
    size = len(numbers)
    numbers.sort()
    if size%2==0:
        return (numbers[size//2-1]+numbers[size//2])/2
    else:
        return numbers[size//2]

n =  getNum() #主体函数
m =  mean(n)
print("平均值:{:.2f},标准差:{:.2f},中位数:{}".format(m,dev(n,m),median(n)))

字典翻转输出
读入一个字典类型的字符串,反转其中键值对输出。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
即,读入字典key:value模式,输出value:key模式。

try: #异常处理
    s=eval(input())
    key=list(s.keys())
    value=list(s.values())
    sub={}
    for i in range(len(key)):
        sub[value[i]]=key[i]
    print(sub)
except:
print("输入错误")

人名最多数统计
编程模板中给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名。

words = s.split()
counts = {}
for word in words:
    counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
print(items[0][0])

数字不同数之和
获得用户输入的一个整数 N,输出 N 中所出现不同数字的和。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
例如:用户输入 123123123,其中所出现的不同数字为:1、2、3,这几个数字和为 6。

N = list(set(list(input())))
s = 0
for i in N:
    s += eval(i)
print(s)

英文单词个数统计

s = '''
"Collusion is very real with Russia," Trump quoted conservative commentator Dan Bongino as saying on Trump's favorite Fox News morning show, "but only with Hillary and the Democrats, and we should demand a full investigation."
'''
a = s.split() #利用split()方法对字符进行切片
num = len(a)
print(num)

汉诺塔求解

steps = 0
def hanoi(src, des, mid, n):
    global steps
    if n == 1:
        steps += 1
        print("[STEP{:>4}] {}->{}".format(steps, src, des))
    else:
        hanoi(src, mid, des, n-1)
        steps += 1
        print("[STEP{:>4}] {}->{}".format(steps, src, des))        
        hanoi(mid, des, src, n-1)
N = eval(input())
hanoi("A", "C", "B", N)

时间差之天数计算
获得用户输入的两个与时间相关的字符串,两个时间用逗号分隔,每个时间字符串格式示例如下:2018年08月01日17点21分21秒。
计算两个时间差的绝对值,输出相差的完整天数

import time
import datetime
def Time(day1,day2):
    day1 = time.strptime(day1,"%Y年%m月%d日%H点%M分%S秒")
    day2 = time.strptime(day2,"%Y年%m月%d日%H点%M分%S秒")
    d1=datetime.datetime(day1[0],day1[1],day1[2],day1[3],day1[4],day1[5])
    d2=datetime.datetime(day2[0],day2[1],day2[2],day2[3],day2[4],day2[5])
    return abs((d1 - d2).days)-1
day1,day2 = input().split(',')
print(Time(day1,day2))

任意累积

def cmul(a,*b):
    for n in b:
        a *= n
    return a
print(eval("cmul({})".format(input())))

随机密码生成‬
以整数 17 为随机数种子,获取用户输入整数 N 为长度,产生 3 个长度为 N 位的密码,密码的每位是一个数字。每个密码单独一行输出

import random as r

def genpwd(length):
    a = 10**(length-1)
    b = 10**length-1
    return "{}".format(r.randint(a,b))
length = eval(input())
r.seed(17)
for i in range(3):
    print(genpwd(length))

猴子吃桃

def peach(n):
    if n == 10:
        return 1
    else:
        return (peach(n+1)+1)*2

for i in range(10,0,-1):
    print("第{}天有{}只桃子".format(i,peach(i)))

生成随机密码
使用 random 库,采用 0x1010 作为随机数种子。
密码 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*中的字符组成。
每个密码长度固定为 10 个字符。
程序运行每次产生 10 个密码,每个密码一行。
每次产生的 10 个密码首字符不能一样

import random as r
r.seed(0x1010)
s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*"
out = ""
while len(out) < 10:
    pwd = ""
    for i in range(10):
        pwd += s[r.randint(0,len(s)-1)]
    if pwd[0] in out:
        continue
    else:
        out += pwd[0]
        print(pwd)

字典最大值
输出字典fruits中键值最大的键值对

fruits = {"apple":10,"mango":12,"durian":20,"banana":5}
m = "apple"
for key in fruits.keys():
    if fruits[key] == max(fruits.values()):
        m = key
print('{}:{}'.format(m,fruits[m]))

四位玫瑰数

for i in range(1000,10000):
    a=i//1000
    b=i//100-a*10
    c=i//10-a*100-b*10
    d=i-a*1000-b*100-c*10
    if a**4+b**4+c**4+d**4==i:
        print(i)

用户登录的三次机会

for i in range(3):
    name = input()
    pasw = input() 
    if(name=="Kate" and pasw=="666666"):
        print("登录成功!")
        break
    elif i==2:
        print("3次用户名或者密码均有误!退出程序。")

连续质数计算

def prime(m):
    r = 1
    for i in range(2,m):
        if m%i == 0:
            r = 0
            break
    return r
    
n = eval(input())
a = int(n)
a = a + 1 if a < n else a
p = ""
count=5
while count>0:
    if(prime(a)):
        p += "{},".format(str(a))
        count -= 1
    a += 1
print(p[:-1])

数列求和
输入一个自然数 n,如果 n 为奇数,输出表达式 1+1/3+…+1/n 的值;如果 n 为偶数,输出表达式 1/2+1/4+…+1/n 的值。输出表达式结果保留 2 位小数

def f(n):
	if n == 1:
		return n
	elif n == 2:
		return 1/2
	else :
		return 1/n+f(n-2)
n = int(input())
print("{:.2f}".format(f(n)))

天数计算 II

import calendar
year,month = input().split(',')
year = int(year)
month = int(month)
monthRange = calendar.monthrange(year,month)
print(monthRange[1])

计算三维空间某点距离原点的欧式距离

import math as m
def distance(x,y,z):
    r = m.sqrt(x**2+y**2+z**2)
    return r
x,y,z=input().split(",")
d=distance(float(x),float(y),float(z))#调用distance函数
print("{:.2f}".format(d))

恺撒密码

s = input()
C =""
for P in s:
    if 'a'<= P <= 'z':
        C += chr( ord('a') + ((ord(P)-ord('a')) + 3 )%26 )
    elif 'A'<= P <='Z':
        C += chr( ord('A') + ((ord(P)-ord('A')) + 3 )%26 )
    else:
        C += P
print(C)

文本词频统计 – Hamlet

def getText():
    txt = open("hamlet.txt", "r").read()
    txt = txt.lower()
    for ch in txt:
        if ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
            txt = txt.replace(ch," ")
    return txt
words = getText().split()
d = {}
for w in words:
    d[w] = d.get(w,0)+1
d=sorted(d.items(),key = lambda x:x[1],reverse=True)
for i in range(10):
    word,cnt = d[i]
    print(word)

人名独特性统计

name = set(s.split())
print(len(name))

字典翻转输出
读入一个字典类型的字符串,反转其中键值对输出。即,读入字典key:value模式,输出value:key模式。

try: #异常处理
    s = eval(input())
    key = list(s.keys())
    value = list(s.values())
    sub = {}
    for i in range(len(key)):
        sub[value[i]] = key[i]
    print(sub)
except:
print("输入错误")

数字不同数之和
获得用户输入的一个整数 N,输出 N 中所出现不同数字的和。例如:用户输入 123123123,其中所出现的不同数字为:1、2、3,这几个数字和为 6。

N = list(set(list(input())))
s = 0
for i in N:
    s += eval(i)
print(s)

四瓣花

import turtle as t
for i in range(4):
    t.seth(90+i*90)
    t.circle(200, 90)
    t.seth((-90)+90*i)
t.circle(200, 90)

六边形

import turtle as t
for i in range(6):
    t.fd(200)
    t.left(60)

温度转换
‘请输入一个带符号的温度:’

Tem = input()

if Tem[-1] in ['F','f']:
    C = (eval(Tem[0:-1])-32)/1.8
    print('{:.2f}C'.format(C))
elif Tem[-1] in ['C','c']:
    F = eval(Tem[0:-1])*1.8+32
    print('{:.2f}F'.format(F))
else:
    print("输入格式错误")

Python蟒蛇绘制

import turtle as t
t.setup(650,350,200,200)
t.penup()
t.fd(-250)
t.pendown()
t.pensize(25)
t.pencolor("purple")
t.seth(-40)
for i in range(4):
    t.circle(40,80)
    t.circle(-40,80)
t.circle(40,80/2)
t.fd(40)
t.circle(16,180)
t.fd(40*2/3)

天天向上的力量

def dayUp(df):   # 定义函数
    dayup = 1
    for i in range(365):
        if i % 7 in [6,0]:
            dayup = dayup * (1 - 0.01)
        else:
            dayup = dayup * (1 + df)
    return dayup
dayfactor = 0.01
while dayUp(dayfactor) < 37.78:
    dayfactor += 0.001
print("工作日的努力参数是: {:.3f}".format(dayfactor))

八角图形绘制

import turtle as t
t.pensize(2)
for i in range(8):
    t.fd(150)
    t.left(135)

正方形

import turtle
d = 0
for i in range(4):
    turtle.fd(200)
    d += 90
turtle.seth(d)

百钱买百鸡

for R in range(1,20):
    for hen in range(1,30):
        chick = 100-R-hen
        if chick/3+hen*3+R*5 ==100:
            print(R,hen,chick)

文章出处登录后可见!

已经登录?立即刷新
退出移动版