PTA | 浙大版《Python程序设计》题目集 | 题解汇总

完结撒花!历时两天!

函数题

6-1

def fn(a, n):
    number = 0
    sum = 0
    for i in range(1, n + 1):
        number = number * 10 + a
        sum += number
    return sum

6-2

def prime(k):
    if k == 1:
        return 0
    x = 2
    while x * x <= k:
        if k % x == 0:
            return 0
        x += 1
    return 1

def PrimeSum(m,n):
    sum = 0
    for k in range(m, n + 1):
        if prime(k):
            sum += k
    return sum

6-3

def CountDigit(number, digit):
    if number == 0:
        return digit == 0
    if number < 0:
        number *= -1
    ans = 0
    while number > 0:
        ans += number % 10 == digit
        number //= 10
    return ans

6-4

def fib(n):
    x, y = 1, 1
    for i in range(2, n + 1):
        x, y = y, x + y
    return y

def PrintFN(m, n):
    x, y = 1, 1
    ans = []
    while x <= n:
        if x >= m:
            ans.append(x)
        x, y = y, x + y
    return ans

6-5

def fac(k):
    return 1 if k == 0 else k * fac(k - 1)

def funcos(eps, x):
    k = 0
    sum = 0
    fl = +1
    while 1:
        tmp = fl * x ** k / fac(k)
        if abs(tmp) < eps:
            break
        sum += tmp
        fl *= -1
        k += 2
    return sum

6-6

def acronym(phrase):
    phrase = phrase.split()
    ans = ""
    for s in phrase:
        ans += s[0].upper()
    return ans

编程题

1-1

a = int(input())
b = int(input())
print(a + b)

1-2

a, b, c = map(int, input().split())
print(b * b - 4 * a * c)

1-3

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

2-1

m = int(input())
sum = 0
for i in range(11, m + 1):
    sum += i
print("sum = {}".format(sum))

2-2

x = float(input())
result = 0 if x == 0 else 1 / x
print("f({:.1f}) = {:.1f}".format(x, result))

2-3

x = int(input())
if x < 0:
    print("Invalid Value!")
else:
    y = max(0, x - 50)
    cost = x * 0.53 + y * 0.05
    print("cost = %.2lf" % cost)

2-4

a, n = map(int, input().split())
number = 0
sum = 0
for i in range(1, n + 1):
    number = number * 10 + a
    sum += number
print("s = %d" % sum)

2-5

n = int(input())
sum = 0
cur = 1
for i in range(n):
    sum += 1 / cur
    cur += 2
print("sum = %.6lf" % sum)

2-6

n = int(input())
up = 1
dw = 1
ty = +1
sum = 0
for i in range(n):
    sum += ty * up / dw
    up += 1
    dw += 2
    ty = -ty
print("%.3lf" % sum)

2-7

a, b = map(int, input().split(','))
s = ""
while b > 0:
    s = s + str(a)
    b -= 1
print(s)

2-8

a, b = input().split(',')
b = int(b)
x = 0
for i in range(len(a)):
    x = x * b + int(a[i]) - int('0')
print(x)

2-9

a, b, c = map(int, input().split())
for i in range(10):
    if a > b:
        a, b = b, a
    if a > c:
        a, c = c, a
    if b > c:
        b, c = c, b
print("%d->%d->%d" % (a, b, c))

2-10

dw, up = map(int, input().split())
if dw > up or up > 100:
    print("Invalid.")
    exit(0)
print("fahr celsius")
for i in range(dw, up + 1, 2):
    print("%d%6.1lf" % (i, 5 * (i - 32) / 9))

2-11

m, n = map(int, input().split())
sum = 0
for i in range(m, n + 1):
    sum += i * i + 1 / i
print("sum = %.6lf" % sum)

2-12

a = list(map(int, input().split()))
a.sort()
if a[0] + a[1] <= a[2]:
    print("These sides do not correspond to a valid triangle")
    exit(0)
s = sum(a) / 2
area = (s * (s - a[0]) * (s - a[1]) * (s - a[2])) ** 0.5
print("area = %.2lf; perimeter = %.2lf" % (area, sum(a)))

2-13

x = int(input())
y = 4 * x / 3 if x <= 15 else 2.5 * x - 17.5
print("%.2lf" % y)

2-14

A, B = map(int, input().split())
cnt = 4
sum = 0
for x in range(A, B + 1):
    sum += x
    cnt = (cnt + 1) % 5
    if x != A and cnt == 0:
        print()
    print("{:5}".format(x), end = "")
print()
print("Sum = {}".format(sum))

3-1

h1 = list(map(int, input().split()))
avg = sum(h1) / len(h1)
h2 = []
for h in h1:
    if h > avg:
        h2.append(h)
for h in h2:
    print("{} ".format(h), end = "")
print()

3-2

w = (7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)
v = "10X98765432"
l = []

n = int(input())
for case in range(n):
    id = input()
    sum = 0
    for i in range(17):
        sum += w[i] * (ord(id[i]) - 48)
    sum %= 11
    if v[sum] != id[17]:
        l.append(id)
if len
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值