python-编程训练题

1.1

编写程序计算购买图书的总金额:用户输入图书的定价和购买图书的数量,并分别保存到一个 float 和一个 int 类型的变量中,然后根据用户输入的定价和购买图书的数量,计算购书的总金额并输出。其中,图书销售策略为:正常情况下按 9 折出售,购书数量超过 10本打 8.5 折,超过 100 本打 8 折

num = int(input('请输入购买书的数量:'))  # 书的数量
price = float(input('请输入购买书的价格:'))  # 书的价格
if 10 < num <= 100:
    print((num * price) * 0.85)
elif num > 100:
    print((num * price) * 0.8)
else:
    print((num * price) * 0.9)

在这里插入图片描述

1.2
动物园想在新建一个三角形的人工湖,一是为了养鱼美观,二是可以循环水资源。从键盘输入三条边 A、B、C 的边长,请编程判断能否组成一个三角形。(可以组成三角形的要素,两边之和大于第三边,两边之差小于第三边)
要求:如果三条边长 A、B、C 能组成三角形的话,输出 YES,否则 NO。

a = float(input('请输入A边:'))
b = float(input('请输入B边:'))
c = float(input('请输入C边:'))
if a + b > c and a + c > b and b + c > a:
    print('YES')
else:
    print('NO')

1.3
商店A 准备在今年夏天开始出售西瓜,西瓜的售价如下,20 斤以上的每斤 0.85 元;重于 15 斤轻于等于 20 斤的,每斤 0.90 元;重于 10 斤轻于等于 15 斤的,每斤 0.95 元;重于 5 斤轻于等于 10 斤的,每斤 1.00 元;轻于或等于 5 斤的,每斤 1.05 元。现在为了知道商店是否会盈利要求 A 公司帮忙设计一个输入西瓜的重量和顾客所付钱数,输出应付货款和应找钱数的程序。

weight = float(input('请输入西瓜的重量:'))
price = float(input('顾客所付钱数:'))
repay = 0
money = 0
if weight > 20:
    money = weight * 0.85
elif 15 < weight <= 20:
    money = weight * 0.9
elif 10 < weight <= 15:
    money = weight * 0.95
elif 5 < weight <= 10:
    money = weight * 1
else:
    money = weight * 1.5
repay = price - money
if repay < 0:
    print(f'商品的价格是{money}元')
    print(f'你所支付的钱不够,你还需支付{-repay}元')
elif repay == 0:
    print('你所支付的钱刚刚好')
else:
    print(f'商品的价格是{money}元')
    print(f'找零{repay}元')

在这里插入图片描述

1.4
对学生成绩进行统计和数据分析可以发现学生对知识的掌握情况,以便教师根据分析的结果调整教学内容和重难点,现在需要完成以下任务来实现成绩分析系统。
输入一个百分制的成绩 t,将其转换成对应的等级然后输出,具体转换规则如下:90~100 为 A
80~89 为 B
70~79 为 C
60~69 为 D
0~59 为 E
要求:如果输入数据不在 0~100 范围内,请输出一行错误提示:“数据超出范围!”

grade = float(input('请输入成绩:'))
if 90 <= grade < 100:
    print('A')
elif 80 <= grade < 90:
    print('B')
elif 70 <= grade < 80:
    print('C')
elif 60 <= grade < 70:
    print('D')
else:
    print('E')

在这里插入图片描述

1.5
从键盘接收一个十一位的数字,判断其是否为尾号 5 连(最后5个数一样)的手机号。规则:第 1 位是 1,
第二位可以是数字 358 其中之一,后面 4 位任意数字,最后 5 位为任意相同的数字。例如:
18601088888、13912366666 则满足。
注意:不满足的输出“false”,满足要求的输出“true”。

phone = int(input('请输入手机号码:'))
one = phone // 10000000000  # 第一位
two = phone // 1000000000 % 10  # 第二位
last_five = [phone % 10, phone % 100 // 10, phone % 1000 // 100, phone % 10000 // 1000,
             phone % 100000 // 10000]  # 最后五位
if one == 1:  # 第 1 位是 1
    if two == 3 or two == 5 or two == 8:  # 第二位可以是数字 358 其中之一
        if sum(last_five) == last_five[0] * 5:  # 最后5位为任意相同的数字
            print("true")
        else:
            print("false")
    else:
        print("false")
else:
    print("false")

在这里插入图片描述

1.6
按顺序输入正方形的边长(a),长方形的长(l)和宽(d),以及圆的半径(r),计算并比较它们哪个图形面积更大,输出面积最大的图形。
例如:输入 1 3 4 1,输出:长方形

a, l, d, r = (input('按顺序输入正方形的边长(a),长方形的长(l)和宽(d),以及圆的半径(r):')).split(' ')
a = float(a)
l = float(l)
d = float(d)
r = float(r)
area = [a * a, l * d, r ** 2 * 3.14]
graphics = ['正方形', '长方形', '圆形']
print(graphics[area.index(max(area))])

在这里插入图片描述

1.7
整除判断游戏能显著提高小朋友的逻辑思维能力,问题要求如下:
•能同时被 3、5、7 整除
•能同时被 3、5 整除
•能同时被 3、7 整除
•能同时被 5、7 整除
•只能被 3、5、7 中的一个整除
•不能被 3、5、7 任一个整除
输入一个整数,输出满足对应条件的结果。要求:使用分支结构语句实现。

data = int(input('请输入一个整数:'))
if data % 3 == 0 and data % 5 == 0 and data % 7 == 0:
    print('能同时被 3、5、7 整除')
elif data % 3 == 0 and data % 5 == 0:
    print('能同时被 3、5 整除')
elif data % 3 == 0 and data % 7 == 0:
    print('能同时被 3、7 整除')
elif data % 5 == 0 and data % 7 == 0:
    print('能同时被 5、7 整除')
elif data % 5 == 0 or data % 7 == 0 or data % 3 == 0:
    print('只能被 3、5、7 中的一个整除')
else:
    print('不能被 3、5、7 任一个整除')

在这里插入图片描述

1.8
判断一个整数是否为“水仙花数”。所谓“水仙花数”是指一个三位的整数,其每个单独数字的立方和等于该数本身。例如:153 是一个“水仙花数”, 例如 153=13+53+3**3。
如果是水仙花数就输出YES,否则就输出No

data = int(input('请输入一个三位的整数:'))
if data == (data // 100) ** 3 + (data // 10 % 10) ** 3 + (data % 10) ** 3:
    print('YES')
else:
    print('NO')

在这里插入图片描述

循环 (包含for while 列表 字典知识)

1.1
从键盘接受一个正整数,列出该数字的中文表示格式,例如:键盘输入 123,打印出一二三;键盘输入 3103,打印出三一零三.(考验循环和列表的索引使用

data = int(input('请输入一个正整数:'))
cn_num = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
print_answer = []
while data:
    print_answer.append(cn_num[data % 10])
    data //= 10
for i in range(len(print_answer) - 1, -1, -1):
    print(print_answer[i], end='')

在这里插入图片描述

1.2
门票的序列号必定是系统里总序列的子序列,请你核对门票的真实性。
从键盘接收两个字符串a 和b,请你判断字符串a 是否包含字符串b,是的话输出“Yes”,否则输出“No”。有多组测试用例,每个测试用例占一行,两个字符串之间用空格隔开。
例如:输入JavaStudy Java 则输出Yes Student School 则输出 No
注意 :判断后者是否存在与前者里面 请用循环完成

a, b = input('按顺序输出字符串a,b:').split(' ')
for i in range(len(a) - len(b) + 1):
    if b == a[i:i + len(b)]:
        print('YES')
        break
else:
    print('NO')

在这里插入图片描述

1.3 中国结
公司现在需要打印中国结的主结(位于中间,最大的那一个结),为了打印出漂亮新颖的主结,于是设计打印主结的长度满足可以被 7 整除这个条件。现在公司需要统计某个范围内
能被 7 整除的整数的个数,以及这些能被 7 整除的数的和。
从键盘上输入一个整数 N,输出 1~N 之间能被 7 整除的整数的数,以及这些能被 7 整除的数的和

sum_seven = 0
data = int(input('请输入一个正整数N:'))
for i in range(1, data):
    if i % 7 == 0:
        sum_seven += i
        print(i, end=' ')
print(f'\n被 7 整除的数的和:{sum_seven}')

在这里插入图片描述

1.4 项列求和
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13 … 求出这个数列的前 20 项之和。要求:利用循环计算该数列的和。注意分子分母的变化规律。
注意:
a1=2, b1=1, c1=a1/b1; a2=a1+b1, b2=a1, c2=a2/b2; a3=a2+b2, b3=a2, c3=a3/b3;

s = c1+c2+…+c20;
s 即为分数序列:2/1,3/2,5/3,8/5,13/8,21/13 … 的前 20 项之和。


num_mom = 2  # 分母
num_sun = 1  # 分子
num_sum = 0  # 序列之和
temp = 0  # 替换值
for i in range(20):
    num_sum += num_sun / num_mom
    temp = num_mom
    num_mom = num_sun
    num_sun = num_sun + temp
print(num_sum)

在这里插入图片描述

1.5
一个球从 100 米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第十次落地时,球共经过多少米? 第十次反弹多高?

sum_h = 0
h = 100
for i in range(10):
    sum_h += h#相加下落的高度
    h = h / 2
    sum_h += h#相加反弹的高度
print(f'球经过{sum_h-h}米')
print(f'第十次反弹{h}米高')

1.6
求奇数、
编写程序实现:从键盘输入正整数 s,从低位开始取出 s 中的奇数位上的数,依次构成一个新数 t,高位仍放在高位,低位仍放在低位,最后在屏幕上输出 t。例如,当 s 中的数为 7654321 时,t 中的数为 7531。

num = int(input('输入一个正整数:'))
i = 1  # 循环次数判断奇、偶
remainder = 0  # 余数
t = 0
mul = 1  # 乘数
if num / 10 == 0:
    t = num % 10
else:
    while num:
        if i % 2 != 0:
            t += num % 10 * mul
            mul = mul * 10
        num = num // 10
        i += 1
print(f't的值是{t}')

在这里插入图片描述

1.7
在一个停车场内,汽车、摩托车共停了 48 辆,其中每辆汽车有 4 个轮子,每辆摩托车
有 3 个轮子,这些车共有 172 个轮子,编程输出停车场内有汽车和摩托车的数量。

i = 0  # 汽车数量
for i in range(1, 49):
    if i * 4 + (48 - i) * 3==172:
        print(f"汽车数量是:{i},摩托车数量是:{48-i}")

在这里插入图片描述

1.8
小明今天参加了“校园歌手大赛”,评委的打分规则是去掉一个最低分和一个最高分后算出剩下分数的平均分,你能帮助小明快速的算出平均分吗? (评委数量必须大于 2)
输入说明:首先输入一个整数 n,代表评委人数,然后输入 n 个数。请按照题目的计算规则计算出平均分然后输出。
例如输入: 6
100 90 90 80 85 95
按照题目注意计算平均分并输出: 90.0

在这里插入代码片n = int(input('输入评委人数:'))
point = input('输入分数:').split(' ')
point = list(map(int, point))  # 将列表值转化为整形
point.remove(max(point))
point.remove(min(point))
print(f'平均分为:{sum(point) / len(point)}')

在这里插入图片描述

1.9九九乘法表、
选择乘法口诀助记功能,输出阶梯形式的 9*9 乘法口诀表

for i in range(1, 10):
    for j in range(1, i+1):
        print(f'{i}X{j}={i * j}', end=' ')
    print()

在这里插入图片描述

1.10
输入一个字符串统计每个字符在字符串中出现的次数。

char = input('请输入一个字符串:')
data = []
count = []
for i in char:
    if i in data:
        count[data.index(i)] += 1
    else:
        data.append(i)
        count.append(1)
for i in range(len(data)):
    print(f'{data[i]}:{count[i]}次')

在这里插入图片描述

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以山河作礼。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值