当前位置:   article > 正文

浙大版PTA《Python 程序设计》题目集 参考答案_浙江大学python程序设计答案

浙江大学python程序设计答案

浙大版PTA《Python 程序设计》题目集 参考答案

本答案配套详解教程专栏,欢迎订阅:

PTA浙大版《Python 程序设计》题目集 详解教程_少侠PSY的博客-CSDN博客

01第1章-1 从键盘输入两个数,求它们的和并输出

a=int(input()) # 输入a的值
b=int(input()) # 输入b的值
print(a+b)     # 输出a+b的值
  • 1
  • 2
  • 3

02第1章-2 从键盘输入三个数到a,b,c中,按公式值输出

a,b,c=input().split()
a=int(a)
b=int(b)
c=int(c)
print(b*b-4*a*c)
  • 1
  • 2
  • 3
  • 4
  • 5

03第1章-3 输出“人生苦短,我学Python

print("人生苦短,我学Python")
  • 1

04第2章-1 计算 11+12+13+…+m

m=int(input())

s=sum([i for i in range(11,m+1)])
print("sum =",s)
  • 1
  • 2
  • 3
  • 4

05第2章-2 计算分段函数[1]

x = float(input())
if x != 0:
    y = 1 / x
else:
    y = 0
print("f({:.1f}) = {:.1f}".format(x, y))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

06第2章-3 阶梯电价

e = float(input())
cost = 0

if e < 0:
    print("Invalid Value!")
else:
    if e <= 50.00:
        cost = e * 0.53
    else:
        cost = 50.0 * 0.53 + (e - 50) * (0.53 + 0.05)
    print(f"cost = {cost:.2f}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

07第2章-4 特殊a串数列求和

a, n = map(int, input().split())
tn = 0
sn = 0

for i in range(1, n + 1):
    tn = tn * 10 + a #第n项的值
    sn = sn + tn     #前n项的和

print("s =", sn)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

08第2章-5 求奇数分之一序列前N项和

N = int(input())
s = 0

for i in range(N):
    s += 1 / (i + i + 1)

print(f"sum = {s:.6f}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

09第2章-6 求交错序列前N项和

n = int(input())
sum = 0
sign = 1

for i in range(1, n + 1):
    sum += sign * i / (i + i - 1)
    sign *= -1

print(f"{sum:.3f}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

10第2章-7 产生每位数字相同的n位数

a,b=input().split(',')
print(int(str(int(a))*int(b)))
  • 1
  • 2

11第2章-8 转换函数使用

x,y=eval(input()) # x,y=map(int, input().split(','))
print(int(str(x),y)) 
  • 1
  • 2

12第2章-9 比较大小

a, b, c = map(int, input().split())

if b > c:
    b, c = c, b 
if a > b:
    a, b = b, a 
if b > c:
    b, c = c, b

print(f"{a}->{b}->{c}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

13第2章-10 输出华氏-摄氏温度转换表

lower, upper = map(int, input().split())
if lower > upper:
    print("Invalid.")
else:
    print("fahr celsius")
    while lower <= upper:
        celsius = 5 * (lower - 32) / 9
        print(f"{lower:d}{celsius:6.1f}")
        lower += 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

14第2章-11 求平方与倒数序列的部分和

m, n = map(int, input().split())
res = 0

for i in range(m, n + 1):
    res += i * i + 1 / i

print(f"sum = {res:.6f}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

15第2章-12 输出三角形面积和周长

import math

a, b, c = map(int, input().split())

if a + b > c and b + c > a and a + c > b:
    perimeter = a + b + c
    s = (a + b + c) / 2.0
    area = math.sqrt(s * (s - a) * (s - b) * (s - c))
    print(f"area = {area:.2f}; perimeter = {perimeter:.2f}")
else:
    print("These sides do not correspond to a valid triangle")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

16第2章-13 分段计算居民水费

x = float(input())
if x > 15.0:
    print("{:.2f}".format(2.5 * x - 17.5))
else:
    print("{:.2f}".format(4 * x / 3))
  • 1
  • 2
  • 3
  • 4
  • 5

17第2章-14 求整数段和

A, B = map(int, input().split())
s = c = 0

for i in range(A, B + 1):
    print(f'{i:5d}', end='')
    c += 1
    if c == 5:
        print()
        c = 0
    s += i

if c:
    print()
print(f'Sum = {s}')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

18第3章-1 大于身高的平均值

l=input().split()
l1=[int(i) for i in l]
aver=sum(l1)/len(l1)
l2=[i for i in l1 if i>aver]
for i in l2:
   print(i,end=' ')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

19第3章-2 查验身份证

#自定义函数,用于验证一个身份证号码是否合法。
def validate_id_number(s):
    w = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
    m = "10X98765432"
    sum = 0
    for j in range(17):
        if not s[j].isdigit():
            return False
        sum += int(s[j]) * w[j]
    sum = sum % 11
    if s[17] != m[sum]:
        return False
    return True

# 主程序
n = int(input())
cnt = 0

for i in range(n):
    s = input()
    if len(s) != 18 or not validate_id_number(s):
        cnt += 1
        print(s)

if cnt == 0:
    print("All passed")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

20第3章-3 输出字母在字符串中位置索引

sen=input()
a,b=input().split()
lst=[(i,sen[i]) for i in range(len(sen)) if sen[i]==a or sen[i]==b]
lstnew=lst[::-1]
for i in range(len(lstnew)):
    print(lstnew[i][0],lstnew[i][1])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

21第3章-4 查找指定字符

cc = input()
str = input()

index = -1
for i in range(len(str)):
    if str[i] == cc:
        index = i

if index != -1:
    print(f"index = {index}")
else:
    print("Not Found")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

22第3章-5 字符转换

s = input()
n = 0

for char in s:
    if '0' <= char <= '9':
        n = n * 10 + int(char)

print(n)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

23第3章-6 求整数序列中出现次数最多的数

a = input().split()
element_count = {} 

if a:
    a.pop(0)

for element in a:
    element_count[element] = a.count(element)

max_element = max(element_count, key=element_count.get) 
max_count = element_count[max_element]  
print(max_element, max_count)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

24第3章-7 求最大值及其下标

n=int(input())
a=list(map(int,input().split()))
print(max(a),a.index(max(a)))
  • 1
  • 2
  • 3

25第3章-8 字符串逆序

s = input()
s = s[::-1]
print(s)
  • 1
  • 2
  • 3

26第3章-9 字符串转换成十进制整数

s = input()
hex_str = "" 
negative = False 

for c in s:
    if c.isdigit() or c.upper() in "ABCDEF":
        hex_str += c
    elif c == "-" and len(hex_str) == 0:
        negative = True
if hex_str:
    num = int(hex_str, 16)
    if negative:
        num = -num
    print(num)
else:
    print(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

27第3章-10 统计大写辅音字母

a = input()
cnt=0
for n in a :
   if n.isupper() and n!="A" and n!="E" and n!="I" and n!="O" and n!="U":
      cnt=cnt+1
print(cnt)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

28第3章-11 字符串排序

lst = input().split()
lst.sort()
print("After sorted:")
for i in range(0,len(lst)):
    print(lst[i])
  • 1
  • 2
  • 3
  • 4
  • 5

29第3章-12 求整数的位数及各位数字之和

n=input()
l=[int(i) for i in n]
print(len(n),sum(l))
  • 1
  • 2
  • 3

30第3章-13 字符串替换

a = list(input())
m = [chr(i) for i in range(ord('A'),ord('Z')+1)]
for i in range(len(a)):
    if a[i] in m:
        b=m.index(a[i])
        a[i]=m[25-b]
b="".join(a)
print(b)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

31第3章-14 字符串字母大小写转换

str = input()
for i in str:
    if i == "#":
      break      
    elif i.islower():
        print(i.upper(),end = "")
    elif i.isupper():
        print(i.lower(),end = "")
    else:
        print(i,end = "")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

32第3章-15 统计一行文本的单词个数

cnt=0
for i in input().split():
    cnt+=1
print(cnt)
  • 1
  • 2
  • 3
  • 4

33第3章-16 删除重复字符

a=set(input())
lst=list(a)
lst.sort()
print(f"{''.join(lst)}")
  • 1
  • 2
  • 3
  • 4

34第3章-17 删除字符

str=input()
c=input()
str,c=str.strip(),c.strip()#移除字符串两端的空白字符
result=str.replace(c.upper(),"")#将 c 的大写形式删除
result=result.replace(c.lower(),"")#将 c 的小写形式删除
print("result:",result)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

35第3章-18 输出10个不重复的英文字母

s = input().strip()
li = []
for i in s:
    if i.isalpha() and i.upper() not in li and i.lower() not in li :
        li.append(i)
        if len(li)==10:
            break
if len(li)<10:
    print('not found')
else:
    s = ''.join(li)
    print(s)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

36第3章-19 找最长的字符串

n = int(input())
max = 0
for i in range(n):
    s = input()
    if(max<len(s)):
        max=len(s)
        maxstr=s
print('The longest is:',maxstr)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

37第3章-20 逆序的三位数

s=input()
s=s[::-1]
print(int(s))
  • 1
  • 2
  • 3

38第3章-21 判断回文字符串

s=input()
print(s)
if s==s[::-1]:
    print('Yes')
else:
    print('No')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

39第3章-22 输出大写英文字母

s = input()
t=""
flag=0
for element in s:
    if(element.isupper()):
        t=t+element
        flag=1
if(flag==0):
    print("Not Found")
else:
    lst=list(t)
    res=list(set(lst))
    res.sort(key=lst.index)
    print("".join(res))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

40第4章-1 生成3的乘方表

n=int(input())
for i in range(n+1):
    a = 3**i
    print(f"pow(3,{i}) = {a}")
  • 1
  • 2
  • 3
  • 4

41第4章-2 统计素数并求和

import math

def is_prime(num):
    sqrt_num = int(math.sqrt(num))
    if num == 1:
        return False
    for i in range(2, sqrt_num + 1):
        if num % i == 0:
            return False
    return True

m, n = map(int, input().split())
counts = 0
sum = 0
for i in range(m, n+1):
    if is_prime(i):
        counts += 1
        sum += i
print(f"{counts} {sum}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

42第4章-3 猴子吃桃问题

N=int(input())
def show(N):
    x=1
    for i in range(0,N-1):
        x=(x+1)*2
    return x
print(show(N))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

43第4章-4 验证“哥德巴赫猜想”

import math

def isPrime(num):
    sqrt_num = int(math.sqrt(num))
    if num == 1:
        return False
    for i in range(2, sqrt_num + 1):
        if num % i == 0:
            return False
    return True

x=int(input())
for y in range(2,x//2+1):
    z = x - y
    if (isPrime(y) == 1 and isPrime(z) == 1):
        print('{:d} = {:d} + {:d}'.format(x, y, z))
        break
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

44第4章-5 求e的近似值

from math import factorial
total = 1
n = int(input())
for i in range(n):
    total += 1/factorial(i+1)
print(f'{total:.8f}')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

45第4章-6 输出前 n 个Fibonacci数

n=int(input())
a, b = 0, 1
if(n>0):
    for i in range(n):
        print(f'{b:11d}',end="")
        a, b = b, a + b
        if((i+1)%5==0):
            print()
else:
    print("Invalid.")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

46第4章-7 统计学生平均成绩与及格人数

n=int(input())
if(n==0):
    print('average = 0.0')
    print('count = 0')
else:
    lst = list(map(int,input().split()))
    sum = sum(lst)
    aver=sum/n
    new_lst = [x for x in lst if x >= 60]
    cnt = len(new_lst)
    print(f'average = {aver:.1f}')
    print(f'count = {cnt:d}')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

47第4章-8 求分数序列前N项和

N=int(input())
a,b,c=2,1,0
for i in range(N):
    c+=a/b
    a,b=a+b,a
print(f"{c:.2f}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

48第4章-9 查询水果价格

print("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit")
num=list(map(int,input().split()))
price=[3,2.5,4.1,10.2]
for i in range(len(num)):
    if num[i]==0 or i>=5:
        break
    elif num[i]>0 and num[i]<5:
        print("price = %.2f"%price[num[i]-1])
    else:
        print("price = 0.00")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

49第4章-10 最大公约数和最小公倍数

import math
a,b=map(int,input().split())
print(math.gcd(a,b),int((a*b)/math.gcd(a,b)))
  • 1
  • 2
  • 3

50第4章-11 判断素数

def prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

n = int(input())
for i in range(n):
    num = eval(input())
    print('Yes') if prime(num) else print('No')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

51第4章-12 求满足条件的斐波那契数

n = int(input("请输入一个整数:"))

fibonacci_sequence = [1, 1]

while fibonacci_sequence[-1] < n:
    next_fib = fibonacci_sequence[-1] + fibonacci_sequence[-2]
    fibonacci_sequence.append(next_fib)

print("最后一个小于", n, "的斐波那契数是:", fibonacci_sequence[-1])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

52第4章-13 求误差小于输入值的e的近似值

a=float(input())
b,c=2,1
n,count=2,1
while b-c>=a:
    count*=n
    n+=1
    c=b
    b=b+1/count
print(f"{b:.6f}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

53第4章-14 统计字符

input_string = input()
letter_count, blank_count, digit_count, other_count = 0, 0, 0, 0

while len(input_string) < 10:
    input_string += '\n'  # 行尾回车符补上
    input_string += input()

input_string = input_string[:10]

for char in input_string:
    if char.isalpha():
        letter_count += 1
    elif char.isspace():
        blank_count += 1
    elif char.isdigit():
        digit_count += 1
    else:
        other_count += 1

print('letter = {}, blank = {}, digit = {}, other = {}'.format(letter_count, blank_count, digit_count, other_count))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

54第4章-15 换硬币

money = int(input())
count = 0 #记录满足条件的组合方式的数量
total = 0 #计算当前组合方式的硬币总数
for fen5 in range(money // 5, 0, -1):
    for fen2 in range((money - fen5 * 5) // 2, 0, -1):
        fen1 = money - fen5 * 5 - fen2 * 2
        total = fen5 + fen2 + fen1
        if fen1 > 0:
            print(f"fen5:{fen5}, fen2:{fen2}, fen1:{fen1}, total:{total}")
            count += 1
            total = 0
print(f"count = {count}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

55第4章-16 jmu-python-判断是否构成三角形

a,b,c=map(int,input().split())
if a+b>c and a+c>b and b+c>a and a>0 and b>0 and c>0:
  print('yes')
else:
  print('no')
  • 1
  • 2
  • 3
  • 4
  • 5

56第4章-17 水仙花数

n = int(input())
for i in range(10**(n-1), 10**n):    #遍历
    ls = [int(x)**n for x in str(i)] #计算每个数字的n次方
    if sum(ls) == i:                 #每个位上的数字求和,然后与数本身进行比较
        print(i)
  • 1
  • 2
  • 3
  • 4
  • 5

57第4章-18 猴子选大王

n=int(input())
a=[i for i in range(1,n+1)]
index=0
while len(a)>1:
    x=a.pop(0)
    index+=1
    if index==3:
        index=0
    else:
        a.append(x)
print(a[0])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

58第4章-19 矩阵运算

n = int(input())
total = 0
matrix = []

for i in range(n):
    row = list(map(int, input().split()))
    matrix.append(row)

for i in range(n):
    for j in range(n):
        if i + j != n - 1 and j != n - 1 and i != n - 1:
            total += matrix[i][j]

print(total)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

59第4章-20 求矩阵各行元素之和

m,n=map(int,input().split())
for i in range(m):
    sr=list(map(int,input().split()))
    print(sum(sr))
  • 1
  • 2
  • 3
  • 4

60第4章-21 判断上三角矩阵

T = int(input()) 

for _ in range(T): 
    n = int(input())  
    matrix = []

    for i in range(n):
        row = list(map(int, input().split()))
        matrix.append(row)

    upper_triangle = True  

    for i in range(n):  
        for j in range(n):
            if i > j and matrix[i][j] != 0:  
                upper_triangle = False 
                break

    if upper_triangle: 
        print("YES")
    else:
        print("NO")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

61第4章-22 找鞍点

num = int(input())
matrix = []

for i in range(num):
    matrix.append(list(map(int, input().split())))
for i in range(num):
    max_row = max(matrix[i][k] for k in range(num))
    for j in range(num):
        min_col = min(matrix[k][j] for k in range(num))
        if max_row == min_col:
            print(f"{i} {j}")
            exit()
print("NONE")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

62第4章-23 求矩阵的局部极大值

m,n=map(int,input().split())
ls=[]
count=0
for i in range(m):
    s=input()
    ls.append([int(i) for i in s.split()])
for i in range(1,m-1):
    for j in range(1,n-1):
        if ls[i][j]>ls[i-1][j] and ls[i][j]>ls[i+1][j] and ls[i][j]>ls[i][j-1] and ls[i][j]>ls[i][j+1]:
            print(ls[i][j],i+1,j+1)
            count+=1
if count==0:
    print("None",m,n)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

63第4章-24 打印九九口诀表

n=int(input())
for i in range(1,n+1):
    for j in range(1,i+1):
        print("%d*%d=%-4d"%(j,i,i*j),end='')
    print()
  • 1
  • 2
  • 3
  • 4
  • 5

64第4章-25 输出三角形字符阵列

n=int(input())
s=ord("A")
for i in range(n,0,-1):
    for j in range(i):
        print(chr(s),end=' ')
        s +=1
    print()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

65第4章-26 求1!+3!+5!+……+n!

n = int(input())
total_sum = 1
factorial = 1

for odd_number in range(3, n + 1, 2):
    factorial *= odd_number*(odd_number-1)
    total_sum += factorial

print(f"n={n},s={total_sum}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

66第4章-27 二维数组中每行最大值和每行和

ls=list(map(int,input().split()))
s=[]
for j in range(3):
    s=ls[3*j:(j+1)*3]
    for i in range(3):
        print("{:>4d}".format(s[i]),end='')
    print(f"{max(s):>4d}",end='')
    print(f"{sum(s):>4d}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

67第4章-28 矩阵转置第4章-28 矩阵转置

ls=list(map(int,input().split()))
s=[]
for i in range(3):
    s.append(ls[3*i:(i+1)*3])
for i in range(3):
    for j in range(3):
        print(f"{s[j][i]:>4d}",end='')
    print()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

68第4章-29 找出不是两个数组共有的元素

l1=list(map(str,input().split()))
l2=list(map(str,input().split()))
ls=[]
l1.pop(0)
l2.pop(0)
for i in l1:
    if i not in l2 and i not in ls:
        ls.append(i)
for j in l2:
    if j not in l1 and j not in ls:
        ls.append(j)
print(*ls)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

69第4章-30 找完数

flag = 0
m,n = map(int,input().split())
for i in range (m,n+1):
    s = [1] 
    for j in range (2,int(i**0.5 + 1)):
        if i%j ==0:
            s.append(j)
            s.append(i//j)
    if sum(s) == i:
        s.sort()
        print (i,end=" = ")
        print(' + '.join(map(str,s)))
        flag=1
if(flag == 0):
    print("None")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

70第5章-1 输出星期名缩写

a=input()
sum={'1':'Mon','2':'Tue','3':'Wed','4':'Thu','5':'Fri','6':'Sat','7':'Sun'}
print(sum[a])
  • 1
  • 2
  • 3

71第5章-2 图的字典表示

n=int(input())
vertex=0
edge=0
length=0
for i in range(n):
    l=input()
    d=eval(l)
    for key1 in d:
        vertex+=1
        for key2 in d[key1]:
            edge+=1
            length+=d[key1][key2]
print(vertex,edge,length)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

72第5章-3 四则运算(用字典实现)

result={"+":"x+y","-":"x-y","*":"x*y","/":'x/y if y!=0   \
        else "divided by zero"'}
x=int(input())
z=input()
y=int(input())
r=eval(result.get(z))
if type(r)!=str:
 print(f'{r:.2f}') 
else:
 print(r)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

73第5章-4 分析活动投票情况

s={"6","7","8","9","10"}-set(input().split(","))
lst=list(s)
lst=[int(i) for i in lst]
lst.sort()
print(*lst)
  • 1
  • 2
  • 3
  • 4
  • 5

74第5章-5 统计字符出现次数

s=input()
ch=input()
dc={}
for c in s:
    dc[c]=dc.get(c,0)+1
if ch in s:
    print(dc[ch])
else:
    print(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

75第5章-6 统计工龄

N = int(input())
dic = {}
ls = list(map(int,input().split()))
for i in ls:
    if i not in dic:
        dic[i] = 1
    else:
        dic[i]+=1
for i in sorted(dic.keys()):
    print(f"{i}:{dic[i]}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

76第5章-7 列表去重

lst=eval(input())
seen=set()
lst1=[i for i in lst if i not in seen and not seen.add(i)]
print(*lst1)
  • 1
  • 2
  • 3
  • 4

77第5章-8 能被3,5和7整除的数的个数(用集合实现)

a,b=input().split()
a,b=int(a),int(b)
s1=set([i for i in range(a,b+1) if i%3==0])
s2=set([i for i in range(a,b+1) if i%5==0])
s3=set([i for i in range(a,b+1) if i%7==0])
print(len(s1&s2&s3))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

78第5章-9 求矩阵鞍点的个数

n=int(input())
a=[]
for i in range(0,n):
    b=input().split()
    a.insert(i,b)
c=[]
d=[]
for i in range(0,n):
    maxa=max(int(a[i][j]) for j in range(n))
    mina=min(int(a[k][i]) for k in range(0,n))
    c+=[(i,j) for j in range(n) if int(a[i][j])==maxa]
    d+=[(k,i) for k in range(n) if int(a[k][i])==mina]
c=list(set(c)&set(d))
print(len(c))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

79第5章-10 两数之和

nums = list(map(int,input().split(',')))
target = int(input())

hm = dict()
for i in range(len(nums)):
    if nums[i] in hm:
        print(hm[nums[i]], i)
        break
    hm[target - nums[i]] = i
else:
    print("no answer")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

80第5章-11 字典合并

#合并字典
dic1=eval(input())
dic2=eval(input())
dic3={}
keys=set(dic1.keys())|set(dic2.keys())
for key in keys:
    value=dic1.get(key,0)+dic2.get(key,0)
    dic3[key]=value
#排序
lst=[(ord(k) if k not in range(0,10) else k,v) for k,v in dic3.items()]
lst.sort()
#输出
lst1=[]
for t in lst:
    if 0<=t[0]<=9:
        lst1.append("{}:{}".format(t[0],t[1]))
    else:
        lst1.append('"{}":{}'.format(chr(t[0]),t[1]))
print("{"+",".join(lst1)+"}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

81第6章-1 输入列表,求列表元素和(eval输入应用)

lst=eval(input())
s=sum([i for i in lst]) 
print(s)
  • 1
  • 2
  • 3

82第6章-2 一帮一

N = int(input())
male_students = []  # 存储男生信息的列表
female_students = []  # 存储女生信息的列表
count = 1

while N > 0:
    s = list(input().split())
    if int(s[0]) == 1:
        male_students.append([s[1], count])
        count+=1
    else:
        female_students.append([s[1], count])
        count += 1
    N -= 1

while male_students and female_students:
    if male_students[0][1] < female_students[0][1]:
        print(f"{male_students.pop(0)[0]} {female_students.pop()[0]}")
    else:
        print(f"{female_students.pop(0)[0]} {male_students.pop()[0]}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

83第6章-3 列表或元组的数字元素求和

def sum_nested_numbers(data):
    total = 0
    for item in data:
        if isinstance(item, (int, float)):
            total += item
        elif isinstance(item, (list, tuple)):
            total += sum_nested_numbers(item)
    return total

input_data = eval(input())  # 从输入字符串中解析出列表或元组
result = sum_nested_numbers(input_data)
print(result)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

84第6章-4 列表数字元素加权和(1)

def calculate_weighted_sum(lst, depth=1):
    total = 0
    for item in lst:
        if isinstance(item, list):
            total += calculate_weighted_sum(item, depth + 1)
        else:
            total += item * depth
    return total

input_list = eval(input())
result = calculate_weighted_sum(input_list)
print(result)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

85第6章-5 列表元素个数的加权和(1)

def weighted_element_count(lst, depth=1):
    count = 0
    for item in lst:
        if isinstance(item, list):
            count += weighted_element_count(item, depth + 1)
        else:
            count += depth
    return count

input_str = input()
input_list = eval(input_str)

result = weighted_element_count(input_list)

print(result)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

86第6章-6 求指定层的元素个数

def count_integers_at_depth(X, depth):
    cnt = 0
    for x in X:
        if type(x)==int:
            if depth == n:
                cnt += 1
        else:
            cnt += count_integers_at_depth(x, depth + 1)
    return cnt

X = eval(input())
n = int(input())
print(count_integers_at_depth(X, 1))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

87第6章-7 找出总分最高的学生

num_students = int(input())
student_info = {}
max_total_score = -1

for i in range(num_students):
    info = input().split()
    student_id = info[0]
    student_name = info[1]
    scores = list(map(int, info[2:]))
    total_score = sum(scores)

    if total_score > max_total_score:
        max_total_score = total_score
        top_student = (student_name, student_id, total_score)

print("{} {} {}".format(top_student[0], top_student[1], top_student[2]))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

88第6章-8 输出全排列

import itertools

n = int(input())
numbers = list(range(1, n + 1))
permutations = list(itertools.permutations(numbers))

for perm in permutations:
    print("".join(map(str, perm)))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

89 第6章函数-1

def fn(a, n):
    result = 0
    current_term = 0

    for i in range(1, n + 1):
        current_term = current_term * 10 + a
        result += current_term

    return result
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

90第6章函数-2 使用函数求素数和

# 定义一个函数 prime,用于判断一个数是否为素数
def prime(p):
    if p <= 1:
        return False
    for i in range(2, int(p**0.5) + 1):
        if p % i == 0:
            return False
    return True

# 定义函数 PrimeSum,用于返回区间 [m, n] 内所有素数的和
def PrimeSum(m, n):
    prime_sum = 0
    for num in range(m, n + 1):
        if prime(num):
            prime_sum += num
    return prime_sum
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

91第6章函数-3 使用函数统计指定数字的个数

def CountDigit(number,digit ):
     numlist=list(str(number))
     dig=str(digit)
     count=numlist.count(dig)
     return count
  • 1
  • 2
  • 3
  • 4
  • 5

92第6章函数-4 使用函数输出指定范围内Fibonacci数的个数

def fib(n):
    if n==0:
        return 1
    elif n==1:
        return 1 
    else:
        i=2;a=1;b=1
        while i<=n:
             a,b = b,a+b
             i=i+1
        return b

def PrintFN(m,n):
     fiblist=[]
     a=1;b=1
     while a<=n:
         if a>=m:
            fiblist.append(a)
         a,b=b,a+b
     return fiblist
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

93第6章函数-5 使用函数求余弦函数的近似值

import math
def funcos(eps,x):
    i=0;s=0;flag=1
    while True:
       item=x**i/math.factorial(i)
       if abs(item)>=eps:
               s=s+flag*item
               flag=-flag
               i=i+2
       else:
           break
    return s
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

94第6章函数-6 缩写词

def  acronym(phrase):
        words=phrase.split()
        res=""
        for word in words:
             res=res+word[0].upper()
        return res
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

95第7章-1 词频统计

import re, collections, sys

words = "".join([line for line in sys.stdin])
words = re.compile(r"\w+", re.I).findall(words.lower().split('#')[0])
words = [each.strip() for each in words]
words = list(map(lambda each: each[0:15] if len(each) > 15 else each, words))
counter = collections.Counter(words)
rank = sorted(counter.items(), key=lambda each: (-each[1], each[0]), reverse=False)
print(len(rank))
for each in rank[0:int(0.1*len(rank))]:
    print("{}:{}".format(each[1], each[0]))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/329085
推荐阅读
相关标签
  

闽ICP备14008679号