分支和循环的综合作业
2024-01-01 15:18:41
一、基础题
1.根据输入的成绩,判断是否及格,成绩范围只允许在0~100之间,输?错误给提示。
# 方法1
sum1 = int(input('输?成绩'))
if 0 < sum1 < 60:
print('不及格')
elif 0 < sum1 <= 100:
print('及格')
else:
print('请输入1~100之间的数')
# 方法2
score = float(input('请输入成绩:'))
if score < 0 or score > 100:
print('输入的成绩有误!')
elif score >= 60:
print('及格')
else:
print('不及格')
2.根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人! 。
# 方法1
sum1 = int(input('输?年纪'))
print('未成年') if 0 < sum1 < 18 else print('成年') if 0 < sum1 <= 150 else print('这不是人')
# 方法2
age = int(input('请输入年龄:'))
# 方法1:
if 0 < age <= 150:
if age >= 18:
print('成年')
else:
print('未成年')
else:
print('这不是人!')
3.输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息 a-b的结果不是奇数。
# 方法1
a = int(input('请输入一个整数:'))
b = int(input('请输入一个整数:'))
if (a - b) % 2:
print(a - b)
else:
print('a-b的结果不是奇数')
# 方法2
a = int(input('输?a'))
b = int(input('输?b'))
print(a - b) if (a - b) % 2 != 0 else print('a-b的结果不是奇数')
4. 使?while循环输出 0~100内所有3的倍数。
# 方法1
x = 0
while x < 99:
x += 3
print(x)
# 方法2
num = 0
while True:
if num % 3 == 0:
print(num)
num += 1
if num > 100:
break
二、进阶题
1.使用循环计算 123*4…*10 的结果
x = 1
for i in range(1,11):
x *= i
print(x)
2.统计100以内个位数是2并且能够被3整除的数的个数。
count1 = 0
for i in range(0,101,2):
if i % 3 == 0 and i % 10 == 2:
count1 += 1
print(count1)
3.打印出所有的水仙花数,所谓水仙花数是指?个三位数,其各位数字立方和等于该数本?。例如:153是?个水仙花数,因为 13 + 53 + 33 等于 153。
num1 = int(input('输入一个三位数的正整数:'))
bai = num1 // 100
shi = num1 // 10 % 10
ge = num1 % 10
print('是水仙花数') if bai**3 + shi**3 + ge**3 == num1 else print('不是水仙花数')
三、挑战题
1.求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这里的n可以是任意正整数,可以通过输入来确定)
# 方法1
n = int(input('请输入数字:'))
if n == 1 or n == 2:
print(1)
else:
n2 = n1 = 1
for _ in range(n - 3):
n1, n2 = n1 + n2, n1
print(n1 + n2)
# 请输入数字:5
# 5
# 方法2
n = int(input('请输入数字:'))
count1 = 1
count2 = 0
for i in range(n):
num = count1+count2
count1 = count2
count2 = num
print(f'第{n}个数是{count2}')
# 请输入数字:8
# 第8个数是21
2.输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
# 方法1
for row in range(1, 10):
for col in range(1, row + 1):
print(col, 'x', row, '=', col * row, end='\t')
print()
# 方法2
for i in range(1,10):
for j in range(1,i + 1):
print(f'{i} * {j} = {i * j}', end='\t')
print()
3.这是经典的"百马百担"问题,有?百匹马,驮?百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
# 方法1
for big in range(0, 34):
for middle in range(0, 51):
small = 100 - big - middle
if small % 2:
continue
if big * 3 + middle * 2 + small / 2 == 100:
print('大马:', big, ' 中马:', middle, ' 小马:', small, sep='')
# 方法2
for i in range(35):
# 使用中马
for j in range(51):
# 使用小马
z = 100 - i - j
if 3 * i + 2 * j + z / 2 == 100:
print(f'大马{i}匹,中马{j}匹,小马{z}匹')
文章来源:https://blog.csdn.net/qq_49771146/article/details/135320479
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!