浙大版《Python 程序设计》题目集

目录

    • 编程题
      • 第1章-1 从键盘输入两个数,求它们的和并输出
      • 第1章-2 从键盘输入三个数到a,b,c中,按公式值输出
      • 第1章-3 输出“人生苦短,我学Python”
      • 第2章-1 计算 11+12+13+...+m
      • 第2章-2 计算分段函数[1]
      • 第2章-3 阶梯电价
      • 第2章-4 特殊a串数列求和
      • 第2章-5 求奇数分之一序列前N项和
      • 第2章-6 求交错序列前N项和
      • 第2章-7 产生每位数字相同的n位数
      • 第2章-8 转换函数使用
      • 第2章-9 比较大小
      • 第2章-10 输出华氏-摄氏温度转换表
      • 第2章-11 求平方与倒数序列的部分和
      • 第2章-12 输出三角形面积和周长
      • 第2章-13 分段计算居民水费
      • 第2章-14 求整数段和
      • 第3章-1 大于身高的平均值
      • 第3章-2 查验身份证
      • 第3章-3 输出字母在字符串中位置索引
      • 第3章-4 查找指定字符
      • 第3章-5 字符转换
      • 第3章-6 求整数序列中出现次数最多的数
      • 第3章-7 求最大值及其下标
      • 第3章-8 字符串逆序
      • 第3章-9 字符串转换成十进制整数
      • 第3章-10 统计大写辅音字母
      • 第3章-11 字符串排序
      • 第3章-12 求整数的位数及各位数字之和
      • 第3章-13 字符串替换
      • 第3章-14 字符串字母大小写转换
      • 第3章-15 统计一行文本的单词个数
      • 第3章-16 删除重复字符
      • 第3章-17 删除字符
      • 第3章-18 输出10个不重复的英文字母
      • 第3章-19 找最长的字符串
      • 第3章-20 逆序的三位数
      • 第3章-21 判断回文字符串
      • 第3章-22 输出大写英文字母
      • 第4章-1 生成3的乘方表
      • 第4章-2 统计素数并求和
      • 第4章-3 猴子吃桃问题
      • 第4章-4 验证“哥德巴赫猜想”
      • 第4章-5 求e的近似值

编程题

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

a = int(input())
b = int(input())
print(sum([a, b]))

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

#map(T, input().split()),T为类型,input().split()以空格为分割符进行输入
a, b, c = map(int, input().split())   
print(sum([b ** 2, -4 * a * c]))

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

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

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

m = int(input())
def cs(a):
    s=0
    for i in range(11, a + 1):
        s = s + i
    return s
print('sum =',cs(m))

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

x = float(input())
def f(x):
    s = 0
    if x != 0:
        s = float(1/x)
    return s
print('f(%.1f) = %.1f' %(x,f(x)))

第2章-3 阶梯电价

s = float(input())
c = 0
if s <= 0:
    print('Invalid Value!')
elif s <= 50:
    c = s * 0.53
    print('cost = %.2f'%c)
else:
    c = 50 * 0.53 + (s-50) * 0.58
    print('cost = %.2f'%c)

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

a, n = map(int, input().split())
def cc(a, n):
    sum = 0
    for i in range(n):
        c = a
        for j in range(i):
            c = c *10 + a
        sum += c
    return sum
print('s =',cc(a, n))

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

n = int(input())
def su(n):
    s = 0
    for i in range(1, n+1):
        s += 1/(2*i - 1)
    return s
print('sum = %.6f'%su(n))

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

n = int(input())
def su(n):
    s = 0
    for i in range(1, n+1):
        k = i/(2*i -1)
        if i%2 ==0:
            s -= k
        else:
            s += k
    return s
print('%.3f'%su(n))

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

a, b = map(int, input().split(','))
print('%d'%a*b)

第2章-8 转换函数使用

num, kind = input().split(',')
print(int(num, base=int(kind)))
#int(x, base = 10) x为数字或字符串,base为进制数,默认为十进制。
#在base = 10 的情况下,x为10进制的数。

第2章-9 比较大小

print(*sorted(map(int,input().split())),sep="->")
#List.sort(),默认为升序排序。如果想要降序排序,则添加一个reverse=True即可。
#如果想要排序的结果按一定格式输出,可以添加一个sep = “->”即可。

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

lower, upper = map(int, input().split())
if lower > upper or upper > 100:
    print('Invalid.')
else:
    print('fahr celsius')
    for i in range(lower, upper + 1, 2):
        c = 5 * (i - 32)/9
        print("{:d}{:>6.1f}".format(i,c))

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

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

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

import math
a, b, c = map(int, input().split())
if a + b >c and a + c > b and b + c > a:
    zc = a +b + c
    s = zc/2
    area = math.sqrt(s*(s-a)*(s-b)*(s-c))
    print('area = %.2f; perimeter = %.2f' %(area,zc))
else:
    print('These sides do not correspond to a valid triangle')

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

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

第2章-14 求整数段和

a, b = map(int, input().split())
s, c= 0, 0
for i in range(a, b+1):
    s = s + i
    c = c + 1
    print("{:>5d}".format(i),end="")
    if c % 5 == 0 or i == b:
        print('')
print('Sum =',s)

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

list = list(map(int, input().split())) #输入以空格为分隔符的整型数据,并组成列表
s = 0 #身高和
for i in range(len(list)):
    s = s + list[i]
avg = s/len(list) #平均身高
for i in range(len(list)):
    if list[i] > avg:
        print(list[i],end=" ") #打印,以空格为结束符

第3章-2 查验身份证

def judge(mlist, jlist, flist): #定义一个判断身份证是否合法的函数
    sum = 0 #和
    x = 0
    lnum = mlist[-1] #记录身份证的最后一位
    mlist = mlist[:17] #截取字符串除了最后一位

    for i in mlist:
        if i >= '0' and i <= '9': #前17位必须为数字
            sum += int(i) * flist[x]
            x += 1
        else:
            return False
    re = sum % 11 #求余
    if jlist[re] == lnum: #判断是否相等
        return True
    else:
        return False

num = int(input()) #输入身份证的个数
cnt = 0 #合法身份证的个数
jlist = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'] #校验码
flist = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] #权重
for i in range(num):
    mlist = input() #逐个输入身份证号
    if judge(mlist, jlist, flist) == False: #不合法
        print(mlist)
    else:
        cnt = cnt + 1
if cnt == num: #全部合法
    print("All passed")

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

list = list(input()) #输入字符串
a, b = input().split() #输入要查找的字符
list.reverse() #反转字符串
for i in range(len(list)):
    if list[i] == a:
        print(len(list) - i -1, end = " ")
        print(a)
    elif list[i] == b:
        print(len(list) - i -1, end = " ")
        print(b)

第3章-4 查找指定字符

a = input() #输入整数
list = list(input())
list.reverse() #reverse()函数用于反向列表中元素
k = -1
for i in range(len(list)):
    if list[i] == a:
        k = len(list) - i - 1
        break
if k == -1:
    print("Not Found")
else:
    print('index =',k)

第3章-5 字符转换

list = list(input()) #把输入的字符串转换成列表格式
t = "" #定义一个空字符串
for i in range(len(list)):
    if "0" <= list[i] <= "9":
        t = t + list[i] #字符串中+号是连接符
print(int(t))

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

#counter类:为hashable对象计数,是字典的子类
#counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储
#其中元素作为key,其计数作为value.计数值可以是任意的interger(包括0和负数)
from collections import Counter

list = list(map(int, input().split())) #以空格为分隔符输入整数

list.pop(0) #删除列表里的第一个元素,也就是序列中整数个数

cnt = Counter(list) #从列表中创建一个Counter类
print(*cnt.most_common(1)[0]) #返回出现次数最多的整数及其出现次数,也就是第一个元素
#most_common([n]):返回一个TopN列表。如果n没有被指定,则返回所有元素。
#注意*号,加了这个符号就是返回数字,没加返回一个元组

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

n = int(input()) #输入正整数n
list = list(map(int,input().split())) #输入以空格为分隔符的整数并做成一个集合
max = list[0] #假设第一个数是最大的
k = 0 #记录最大值的最小下标
for i in range(1, len(list)):
    if list[i] > max:
        max = list[i] #覆盖最大值
        k = i #下标发生变化
print(max, k)

第3章-8 字符串逆序

list = input() #输入字符串
print(list[::-1]) #使用切片特性。[::-1]表示每一个数取一个,从最后一个数开始取

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

s = input().upper() #upper()函数把小写转换成大写。
#十六进制中都是大写的字母,题中要求不分大小写。方便起见,都换成大写。
end = s.index('#') #以#结束,并把#赋给end
s_eff = s[:end] #从索引0开始,到end为止,不包括end
sixteen = list('0123456789ABCDEF') #把十六进制中所有元素组成一个列表
li = [] #定义一个新的列表,储存字符串中的十六进制数
flag = 1 #判断是否为负数的标志
for i in s_eff: #从输入的字符串第一个元素开始遍历
    if i in sixteen: #如果元素是十六进制元素
        li.append(i) #将元素添加到li中
if not li: #如果li为空,即没有一个十六进制数,输出0
    print(0)
else:
    if '-' in s_eff: #如果出现了-号
        if s_eff.index('-') < s_eff.index(li[0]): #-号的坐标在十六进制数前面
            flag = -1 #为负
    number = int(''.join(li),16) #将
    print(number*flag)
#int(x, base = 10) x为数字或字符串,base为进制数,默认为十进制,
#在base = 10 的情况下,x为10进制的数。
#join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串
#str.join(sequence):sequence,要连接的元素序列

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

cs = input() #输入字符串
yy = ['A', 'E', 'I', 'O', 'U'] #把大写元音字母放在一个集合里
c = 0 #计数
for i in range(len(cs)): #循环,开始遍历
    if cs[i] >='A' and cs[i] <= 'Z': #首先必须是大写字母
        if cs[i]  not in yy: #不是元音字母
            c = c + 1
print(c)

第3章-11 字符串排序

list = input().split() #输入以空格为分隔符的字符串
list.sort() #默认情况下,sort() 方法对列表进行升序排序
print("After sorted:")
for i in range(len(list)):
    print(list[i])

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

n = input() #把整数看成一个字符串输入
sum = 0 #求和
for i in n: #遍历
    sum = sum + int(i) #注意将i变成整型
print(len(n), sum)

第3章-13 字符串替换

s = list(input()) #把输入的字符串转换成列表
for i in range(len(s)): #开始遍历
    if 'A' <= s[i] <= 'Z': #限定范围
        s[i] = chr(ord('A') + ord('Z') - ord(s[i]))
#chr()用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符
#ord()函数以一个字符为参数,返回对应的ASCLL数值,或者Unicode数值
print(''.join(s))
#不能直接print(s),这个结果会是返回一个列表

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

s = list(input()) #输入字符串转换成list
s.pop(-1) #删除最后一个元素也就是#
for i in range(len(s)-1):
    if 'a' <= s[i] <= 'z':
        s[i] = chr(ord(s[i]) - 32)
    elif 'A' <= s[i] <= 'Z':
        s[i] = chr(ord(s[i]) + 32)
print(''.join(s))

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

s = input().split() #输入以空格为分隔符的字符串
print(len(s))

第3章-16 删除重复字符

#set是一个没有重复元素的对象集合
s = list(set(input())) #在这一步直接去除重复元素
s.sort() #sort()函数默认从小到大排序
print(''.join(s))

第3章-17 删除字符

s=input().strip()#strip()函数的作用是去除字符串头尾的空格
n=input().strip()
s=s.replace(n.upper(),"")#replace(old, new)
s=s.replace(n.lower(),"")
print("result: %s"%s)  

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

st = input() #输入
list = [] #定义一个列表存储10个不重复的英文字母
for i in st: #遍历
    #isalpha()方法检测字符串是否只由字母组成
    if i.isalpha() and i.lower() not in list and i.upper() not in list:
        list.append(i) #添加元素
if len(list) < 10: #如果不够10个
    print("not found")
else:
    print(*list[:10], sep="") #用到切片,输出前10个不同的英文字母

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

n = int(input()) #输入一个整数
max = 0 #记录最大长度
maxstr = "" #定义一个字符串,接收最长字符串
for i in range(n):
    st = input() #输入字符串
    if max < len(st):
        max = len(st)
        maxstr = st
print("The longest is: %s" %maxstr)

第3章-20 逆序的三位数

n = input() #输入
a = int(n[0])
b = int(n[1])
c = int(n[2])
print(a + b * 10 + c * 100)

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

s = input()
s1 = s[::-1] #从最后一个元素开始,每一个数取一个
print(s)
if s == s1:
    print('Yes')
else:
    print('No')

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

s = list(input())
flag = 0 #有无大写字母的标志
t = []
for i in range(len(s)):
    if 'A' <= s[i] <= 'Z' and s[i] not in t: #是大写并且没有在t里面出现过
        flag = 1
        t.append(s[i])
if flag == 1:
    print("".join(t))
else:
    print("Not Found")

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

import math
n = int(input()) #输入整数
for i in range(n+1):
    print('pow(3,%d) = %d' %(i, math.pow(3, i)))

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

import math

def isPd(n): #编写判断素数函数
    flag = 1 #标志
    if n == 1: #1不是素数
        flag = 0
    for i in range(2, int(math.sqrt(n) + 1)):#素数判断方法,一半从2到n的算术平方根
        if n % i == 0:
            flag = 0
            break
    return flag

m, n = map(int, input().split())
count, sum = 0, 0
for i in range(m, n + 1):
    if isPd(i) == 1:
        sum += i
        count += 1
print(count, sum)

第4章-3 猴子吃桃问题

n = int(input())
a = 1
for i in range(1, n):
    a = (a + 1) * 2 #关系式,只有第1~n-1天吃了桃子
print(a)

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

import math

n = int(input())

def isPrime(n): #定义一个判断素数的函数
    flag = 1
    if n == 1:
        flag = 0
    for i in range(2, int(math.sqrt(n) + 1)):
        if n % i ==  0:
            flag = 0
            break
    return flag

for i in range(2, n):
    if isPrime(i) == 1 and isPrime(n - i) == 1:
        print('%d = %d + %d' %(n, i, n-i))
        break

第4章-5 求e的近似值

n = int(input())

def muTi(n): #定义一个求阶乘的函数
    s = 1
    for i in range(1, n + 1):
        s *= i
    return s

sum = 1
for i in range(1, n + 1):
    sum += 1/muTi(i)
print('%.8f' %sum)

你可能感兴趣的:(PAT)