分支和循环的综合作业

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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。