《python程序设计题目》

本文涵盖Python刷题实战,包括水果价格查询、数论应用(最大公约数与最小公倍数)、素数判断、斐波那契数计算、数值逼近、字符统计、硬币兑换、几何问题、水仙花数查找、猴子选王、矩阵运算、行元素和求和等,适合提升编程技能和理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python刷题

题目:第4章-9 查询水果价格 (15 分)

给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上显示以下菜单:

[1] apple [2] pear [3] orange [4] grape [0] exit

用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。

输入格式:
输入在一行中给出用户连续输入的若干个编号。

输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。

输入样例1:

3 -1 0 2

输出样例1:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00

输入样例2:

1 2 3 3 4 4 5 6 7 8

输出样例2:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 3.00
price =2.50
price = 4.10
price = 4.10
price = 10.20

一、代码:

def menu():
    print("[1] apple")
    print("[2] pear")
    print("[3] orange")
    print("[4] grape")
    print("[0] exit")
def price(m):
    if m==1:
        print("price = 3.00")
    elif m==2:
        print("price = 2.50")
    elif m==3:
        print("price = 4.10")
    elif m == 4:
        print("price = 10.20")
    elif m!=0:
        print("price = 0.00")

menu()
lst= list(map(int,input().split()))# 队列输入,并且以空格间隔输入
count=0
for i in lst:
    if i==0:
        break
    price(i)
    count+=1
    if count==5:
        break

二、心得

1.通过函数实现菜单和价格选择
2.多个数据的输入可以通过列表实现:list(map(int,input().split()))

题目:第4章-10 最大公约数和最小公倍数 (15 分)

本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:
输入在一行中给出两个正整数M和N(≤1000)。

输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:

511 292

输出样例:

73 2044

一、代码

def maxgys(a,b):
    if a%b == 0: # 不断取余直到为0
        return b
    else:
        return maxgys(b,a%b)
n,m=map(int,input().split()) 
print("{:d} {:d}".format(maxgys(n,m),n*m//maxgys(n,m)))  # //表示取整除,否则存在类型不同报错

二、心得

1.掌握最大公约数和最小公倍数的求法
2.// 取整除符号表达,如12//5,输出 2

题目:第4章-11 判断素数 (20 分)

判断一个给定的正整数是否素数

输入格式:
输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于1000000 的需要判断的正整数

输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No

输入样例:
在这里给出一组输入。例如:

2
11
111

输出样例:
在这里给出相应的输出。例如:

Yes
No

一、代码

def sushu(a):
    a=int(a)
    if a==1:
        return False
    elif a==2:
        return True
    else:
        for i in range(2,a): # 不能包含到本身,及不能a+1
            if a%i ==0:
                return False # else不能写在这里同一层次,否则一旦不能整余就直接return True
        if a!=1: # 另开判断,用是否为1作为条件
            return True
num= int(input())
for i in range(num):
    p=int(input())
    if sushu(p):
        print("Yes")
    else:
        print("No")

二、心得

1.掌握素数如何判断
2.按n个数输入的实现格式,通过for循环
3.注意类型转化 a=T(a) :将a强制转化为T类型

题目:第4章-12 求满足条件的斐波那契数 (30 分)

斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求大于输入数的最小斐波那契数。

输入格式:
在一行输人一个正整数n(n>=10)。

输出格式:
在一行输出大于n的最小斐波那契数。

输入样例:
在这里给出一组输入。例如:

10

输出样例:
在这里给出相应的输出。例如:

13

一、代码

def Fol(first,second,m):
    m=int(m)
    t=0
    t=first
    first=second
    second=t+second
    if second>=m:
        print(second)
        return 0
    Fol(first,second,m)
p=int(input())
Fol(1,1,p)  

二、心得

掌握并熟练斐波拉数的算法
1 1 2 3 5 8…

题目:第4章-13 求误差小于输入值的e的近似值 (20 分)

自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。ei代表前i项求和。输入误差范围error,当
ei+1-ei<error,则表示e的近似值满足误差范围。

输入格式:
在一行输入误差范围,误差小于等于0.01。

输出格式:
在一行输出e的近似值(保留6位小数)。

输入样例1:
在这里给出一组输入。例如:

0.01

输出样例1:
在这里给出相应的输出。例如:

2.716667

输入样例2:
在这里给出一组输入。例如:

0.000000001

输出样例2:
在这里给出相应的输出。例如:

2.718282

一、代码

err=float(input())
Sum=float(1)
a=i=int(1)
while err<=1/a:
    Sum+=1/a
    a*=(i+1)
    i+=1
print('{:.6f}'.format(Sum+1/a))

二、心得

1.注意类型转化
2.阶乘表达,while循环 a=(i+1) i+=1*

题目:第4章-14 统计字符 (15 分)

本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:
输入为10个字符。最后一个回车表示输入结束,不算在内。

输出格式:
在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。

输入样例: aZ &
09 Az

输出样例:

letter = 4, blank = 3, digit = 2, other = 1

一、代码

s=[]
count=0;letters=0;space=0;digit=0;others=0
while True:
    b=list(input())
    count=count+1
    s.extend(b) # extend(b) 将b列表元素拷贝到s中
    if len(s)+count>10:
        count=count-1
        break
for c in s:
    if c.isalpha(): # 判断是否为字母
        letters+=1
    elif c.isspace(): # 判断是否为空格
        space+=1
    elif c.isdigit(): # 判断是否为数字
        digit+=1
    else:
        others+=1 # 判断是否为其他
print("letter = {}, blank = {}, digit = {}, other = {}".format(letters,space+count,digit,others))

二、心得

1.熟悉列表的基本函数:extend()
2.掌握字符串的基本函数

题目:第4章-15 换硬币 (20 分)

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?

输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。

输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。

输入样例:

13

输出样例:

fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count= 4

一、代码

count = 0
x = int(input())  # x∈(8,100)
a = x // 5
for m in range(a, 0, -1):  # fen5
    b = (x - (m * 5)) // 2
    for n in range(b, 0, -1):  # fen2
        c = x - (5 * m) - (2 * n)  # fen1
        if m > 0 and n > 0 and c > 0:  # 每种硬币至少有一枚
            print("fen5:{}, fen2:{}, fen1:{}, total:{}".format(m, n, c, m + n + c))
            count += 1

print("count = {}".format(count))

二、心得

1.了解题目目的

题目:第4章-16 jmu-python-判断是否构成三角形 (10 分)

输入三角形的三边,判断是否能构成三角形。若能构成输出yes,否则输出no。

输入格式:
在一行中直接输入3个整数,3个整数之间各用一个空格间隔,没有其他任何附加字符。

输出格式:
直接输出yes或no,没有其他任何附加字符。

输入样例1:

3 4 5

输出样例1:

yes

输入样例2:

1 2 3

输出样例2:

no

一、代码

a,b,c=map(int,input().split())
if a+b<=c or a+c<=b or b+c<=a:
    print("no")
else:
    print("yes")

二、心得

1.懂得三角形判断。

题目:第4章-17 水仙花数(20 分) (20 分)

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。 例如:153=1×1×1+5×5×5+3×3×3。

本题要求编写程序,计算所有N位水仙花数。

输入格式:
输入在一行中给出一个正整数N(3≤N≤5)

输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:
在这里给出一组输入。例如:

3

输出样例:
在这里给出相应的输出。例如:

153
370
371
407

一、代码

n=int(input())
for i in range(10**(n-1), 10**n): # 10**(n) 10的n次幂
    ls=list(map(int, list(str(i))))  # str(i)转换为string类型,在转化为列表,在转化为int赋值给ls
    s=0
    for j in ls: 
        s+=j**n
    if s==i:
        print(i)

二、心得

1.某个数的n次幂表示:T(n) T的n次幂**
2.数据类型转换
3.map()函数的熟悉使用

题目:第4章-18 猴子选大王 (20 分)

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入格式:
输入在一行中给一个正整数N(≤1000)。

输出格式:
在一行中输出当选猴王的编号。

输入样例:

11

输出样例:

7

一、代码

n=int(input())
if n == 1:
    print(1)
else:
    monkey=[i for i in range(1,n+1)] # monkey为列表,i为成员,i来自for循环里
    # print(monkey)
    while len(monkey) >= 3:
        monkey.pop(2) # 将下标为2,即第三个成员删除
        monkey.append(monkey.pop(0)) # 将第一个成员提到最后
        monkey.append(monkey.pop(0)) # 将更新后的第一个成员再次提到最后
    print(monkey[1]) # 少于三个打印第一个成员即是所求
    

二、心得

1.掌握列表巧妙的赋值 monkey=[i for i in range(1,n+1)]
2**.a.pop(index) ,a.append(value)** 熟悉使用,一个是删除,一个是在尾部插入

题目:第4章-19 矩阵运算 (20 分)

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:
输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

输出格式:
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:

4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1

输出样例:

35

一、代码

n=int(input())
s=0
for i in range(1,n+1):
    m=list(map(int,input().split()))
    if i==1:
        m.pop(-i)
        s=s+sum(m)
    elif i==n:
        s=s
    else:
        m.pop(-i)
        m.pop(-1)
        s=s+sum(m)
print(s)

二、心得

1.掌握列表巧妙的赋值 m=list(map(int,input().split()))
2**.a.pop(index) ,a.append(value)** 熟悉使用,一个是删除,一个是在尾部插入

题目:第4章-20 求矩阵各行元素之和 (15 分)

本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间

以空格分隔。

输出格式:
每行输出对应矩阵行元素之和。

输入样例:

3 2
6 3
1 -8
3 12

输出样例:

9
-7
15

一、代码

m,n=map(int,input().split())
for i in range(1,m+1):
    lst=list(map(int,input().split()))
    print(sum(lst))

二、心得

1.列表自带sum(lst)求和函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值