烧脑题练习
一、If逻辑判断
1.1
编写程序计算购买图书的总金额:用户输入图书的定价和购买图书的数量,并分别保存到一个 float 和一个 int 类型的变量中,然后根据用户输入的定价和购买图书的数量,计算购书的总金额并输出。其中,图书销售策略为:正常情况下按 9 折出售,购书数量超过 10本打 8.5 折,超过 100 本打 8 折
# 1.1
price = float(input('请输入图书的定价'))
number = int(input('请输入购买图书的数量'))
if number <= 10:
print(f'购买图书的总金额为:{(price * number * 0.9):.2f}')
elif number < 100:
print(f'购买图书的总金额为:{(price * number * 8.5):.2f}')
else:
print(f'购买图书的总金额为:{(price * number * 0.8):.2f}')
1.2
动物园想在新建一个三角形的人工湖,一是为了养鱼美观,二是可以循环水资源。从键盘输入三条边 A、B、C 的边长,请编程判断能否组成一个三角形。(可以组成三角形的要素,两边之和大于第三边,两边之差小于第三边)
要求:如果三条边长 A、B、C 能组成三角形的话,输出 YES,否则 NO。
# 1.2
a = float(input('输入边A'))
b = float(input('输入边B'))
c = float(input('输入边C'))
if a + b > c and a + c > b and b + c > a:
if abs(a - b) < c and abs(a - c) < b and abs(b - c) < a:
print('YES')
else:
print('NO')
else:
pass
1.3
商店A 准备在今年夏天开始出售西瓜,西瓜的售价如下,20 斤以上的每斤 0.85 元;重于 15 斤轻于等于 20 斤的,每斤 0.90 元;重于 10 斤轻于等于 15 斤的,每斤 0.95 元;重于 5 斤轻于等于 10 斤的,每斤 1.00 元;轻于或等于 5 斤的,每斤 1.05 元。现在为了知道商店是否会盈利要求 A 公司帮忙设计一个输入西瓜的重量和顾客所付钱数,输出应付货款和应找钱数的程序。
# 1.3
weight = float(input('输入西瓜重量:'))
money = float(input('顾客所付钱数:'))
if weight > 20:
print(f'应付货款{(weight * 0.85):.2f}')
print(f'应找钱数{(money - (weight * 0.85)):.2f}')
elif weight > 15:
print(f'应付货款{(weight * 0.90):.2f}')
print(f'应找钱数{(money - (weight * 0.90)):.2f}')
elif weight > 10:
print(f'应付货款{(weight * 0.95):.2f}')
print(f'应找钱数{(money - (weight * 0.95)):.2f}')
elif weight > 5:
print(f'应付货款{(weight * 1.00):.2f}')
print(f'应找钱数{(money - (weight * 1.00)):.2f}')
else:
print(f'应付货款{(weight * 1.05):.2f}')
print(f'应找钱数{(money - (weight * 1.05)):.2f}')
1.4
对学生成绩进行统计和数据分析可以发现学生对知识的掌握情况,以便教师根据分析的结果调整教学内容和重难点,现在需要完成以下任务来实现成绩分析系统。输入一个百分制的成绩 t,将其转换成对应的等级然后输出,具体转换规则如下:
90~100 为 A
80~89 为 B
70~79 为 C
60~69 为 D
0~59 为 E
要求:如果输入数据不在 0~100 范围内,请输出一行错误提示:“数据超出范围!”
# 1.4
score = float(input('输入一个百分制的成绩:'))
if score < 0 or score > 100:
print('数据超出范围!')
elif 100 >= score >= 90:
print('A')
elif 90 > score >= 80:
print('B')
elif 79 > score >= 70:
print('C')
elif 69 > score >= 60:
print('D')
else:
print('E')
1.5
从键盘接收一个十一位的数字,判断其是否为尾号 5 连(最后5个数一样)的手机号。规则:第 1 位是 1,第二位可以是数字 358 其中之一,后面 4 位任意数字,最后 5 位为任意相同的数字。例如:18601088888、13912366666 则满足。
注意:不满足的输出“false”,满足要求的输出“true”。
# 1.5
num = input('接收一个十一位的数字')
num1 = num[-1]
num2 = num[-2]
num3 = num[-3]
num4 = num[-4]
num5 = num[-5]
if num1 == num2 and num2 == num3 and num3 == num4 and num4 == num5:
print('true')
else:
print('false')
1.6
按顺序输入正方形的边长(a),长方形的长(l)和宽(d),以及圆的半径(r),计算并比较它们哪个图形面积更大,输出面积最大的图形。例如:输入 1 3 4 1,输出:长方形
# 1.6
a = input('请输入正方形的边长')
l = input('请输入长方形的长')
d = input('请输入长方形的宽')
r = input('请输入圆的半径')
s1 = int(a) ** 2
s2 = int(l) * int(d)
s3 = 3.14 * int(r) ** 2
if s1 >= s2:
if s1 >= s3:
print('正方形', s1)
else:
print('圆形', s3)
elif s2 >= s3:
print('长方形', s2)
else:
print('圆形', s3)
1.7
整除判断游戏能显著提高小朋友的逻辑思维能力,问题要求如下:
•能同时被 3、5、7 整除
•能同时被 3、5 整除
•能同时被 3、7 整除
•能同时被 5、7 整除
•只能被 3、5、7 中的一个整除
•不能被 3、5、7 任一个整除
输入一个整数,输出满足对应条件的结果。要求:使用分支结构语句实现。
# 1.7
inter = int(input('输入一个整数:'))
if inter % 3 == 0 and inter % 5 == 0 and inter % 7 == 0:
print('能同时被 3、5、7 整除')
elif inter % 3 == 0 and inter % 5 == 0:
print('能同时被 3、5整除')
elif inter % 3 == 0 and inter % 7 == 0:
print('能同时被 3、7整除')
elif inter % 5 == 0 and inter % 7 == 0:
print('能同时被 5、7整除')
elif inter % 3 == 0 or inter % 5 == 0 or inter % 7 == 0:
print('只能被 3、5、7 中的一个整除')
else:
print('不能被 3、5、7 任一个整除')
1.8
判断一个整数是否为“水仙花数”。所谓“水仙花数”是指一个三位的整数,其每个单独数字的立方和等于该数本身。例如:153 是一个“水仙花数”, 例如 153=1**3+5**3+3**3。如果是水仙花数就输出YES,否则就输出No
# 1.8
num = input('输入三位的整数')
num1 = int(num[0])
num2 = int(num[1])
num3 = int(num[2])
num0 = int(num)
if num0 == num1 ** 3 + num2 ** 3 + num3 ** 3:
print('YES')
else:
print('NO')
二、循环 (包含for while 列表 字典知识)
1.5
一个球从 100 米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第十次落地时,球共经过多少米? 第十次反弹多高?
# 1.5
height = 100
for i in range(0, 10):
height /= 2
print(height)
a = 2**10
print(a)
print(100/a)
1.7
在一个停车场内,汽车、摩托车共停了 48 辆,其中每辆汽车有 4 个轮子,每辆摩托车有 3 个轮子,这些车共有 172 个轮子,编程输出停车场内有汽车和摩托车的数量。
# 1.7
for i in range(1,48):
for j in range(1,48-i):
if ((i * 4 + j * 3) == 172):
print(f'汽车{i}辆, 摩托车{j}辆')
continue
continue
pass
1.9九九乘法表
选择乘法口诀助记功能,输出阶梯形式的 9*9 乘法口诀表
# 1.9
for i in range(1, 10):
for j in range(1, 10):
print(f'{i}*{j}=', i * j, end=' ')
print()
pass
i = 1 # 计算器
while i < 10: # 外循环里面写内循环
# print(i)
j = 1 # 内循环计数器
while j < i + 1: # 内循环判断条件
print(f"{j}*{i}={i * j}", end='\t') # 执行代码
j += 1 # 内循环自增
print() # 换行操作
i += 1 # 外循环自增1
1.16
已知鸡和兔的总数量为 n,总腿数为 m。输入 n 和 m,依次输出鸡和兔的数目,如果无解, 则输出“No answer”(不要引号)
# 16
n = int(input('输入鸡和兔的总数量:'))
m = int(input('输入总腿数:'))
for i in range(1, int(m / 2)):
for j in range(1, n):
if i * 2 + j * 4 == m:
print(f'鸡的数量为:{i},兔的数量为:{j}')
else:
continue
continue
else:
print('No answer')
1.18
啤酒每罐 2.3 元,饮料每罐 1.9 元。小明买了若干啤酒和饮料,一共花了 82.3 元。我们还知道他买的啤酒比饮料的数量少,请你编程计算他买了几罐啤酒。
# 1.18
for i in range(1, int(82.3 / 2.3)):
for j in range(1, int(82.3 / 1.9)):
if i < j:
if i * 2.3 + j * 1.9 == 82.3:
print(f'买了{i}罐啤酒')
else:
continue
else:
pass
浙公网安备 33010602011771号