练习目录
- 一、基础题
-
- 1.根据输入的成绩,判断是否及格,成绩范围只允许在0~100之间,输⼊错误给提示。
- 2.根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人! 。
- 3.输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息 a-b的结果不是奇数。
- 4. 使⽤while循环输出 0~100内所有3的倍数。
- 二、进阶题
-
- 1.使用循环计算 1*2*3*4...*10 的结果
- 2.统计100以内个位数是2并且能够被3整除的数的个数。
- 3.打印出所有的水仙花数,所谓水仙花数是指⼀个三位数,其各位数字立方和等于该数本⾝。例如:153是⼀个水仙花数,因为 1³ + 5³ + 3³ 等于 153。
- 三、挑战题
-
- 1.求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34.... (这里的n可以是任意正整数,可以通过输入来确定)
- 2.输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
- 3.这是经典的"百马百担"问题,有⼀百匹马,驮⼀百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
一、基础题
1.根据输入的成绩,判断是否及格,成绩范围只允许在0~100之间,输⼊错误给提示。
sum1 = int(input('输⼊成绩'))
if 0 < sum1 < 60:
print('不及格')
elif 0 < sum1 <= 100:
print('及格')
else:
print('请输入1~100之间的数')
score = float(input('请输入成绩:'))
if score < 0 or score > 100:
print('输入的成绩有误!')
elif score >= 60:
print('及格')
else:
print('不及格')
2.根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人! 。
sum1 = int(input('输⼊年纪'))
print('未成年') if 0 < sum1 < 18 else print('成年') if 0 < sum1 <= 150 else print('这不是人')
age = int(input('请输入年龄:'))
if 0 < age <= 150:
if age >= 18:
print('成年')
else:
print('未成年')
else:
print('这不是人!')
3.输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息 a-b的结果不是奇数。
a = int(input('请输入一个整数:'))
b = int(input('请输入一个整数:'))
if (a - b) % 2:
print(a - b)
else:
print('a-b的结果不是奇数')
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的倍数。
x = 0
while x < 99:
x += 3
print(x)
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是⼀个水仙花数,因为 1³ + 5³ + 3³ 等于 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可以是任意正整数,可以通过输入来确定)
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)
n = int(input('请输入数字:'))
count1 = 1
count2 = 0
for i in range(n):
num = count1+count2
count1 = count2
count2 = num
print(f'第{n}个数是{count2}')
2.输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for row in range(1, 10):
for col in range(1, row + 1):
print(col, 'x', row, '=', col * row, end='\t')
print()
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担,问有大,中,小马各几匹?(可以直接使用穷举法)
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='')
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}匹')