1 .根据输入的成绩的范围打印及格 或者不及格。
grade = 67
if grade >= 60 :
print ( '及格' )
else :
print ( '不及格' )
2.根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人!
print ( '===============第1题================' )
age = 89
if 0 <= age <= 150 :
if age >= 18 :
print ( '成年' )
else :
print ( '未成年' )
else :
print ( '不是人!' )
if age < 0 or age > 150 :
print ( '不是人!' )
elif age >= 18 :
print ( '成年人' )
else :
print ( '未成年人' )
3.输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数。
print ( '===============第2题================' )
a = 34
b = 21
result = a- b if ( a- b) & 1 else '结果不是奇数'
print ( result)
if ( a- b) & 1 == 1 :
print ( a- b)
else :
print ( '结果不是奇数' )
print ( '===============第3题================' )
num = 0
while True :
num += 3
if num > 100 :
break
print ( num)
'''
num:0
True -》 num = 0+3 -》 num:3 > 100 -> False -》 print:3
True -》 num = 3+3 -》 num:6 > 100 -> False -》 print:6
True -》 num = 6+3 -》 num:9 > 100 -> False -》 print:9
...
...
True -》 num = 96+3 -》 num:99 > 100 -> False -》 print:99
True -》 num = 99+3 -》 num:102 > 100 -> True -》 break
'''
print ( '========================================' )
num = 0
while num <= 100 :
num += 3
print ( num)
'''
num:0
num:0 <= 100 -> True 》 num= 0+3 》 print:3
num:3 <= 100 -> True 》 num= 3+3 》 print:6
...
...
num:96 <= 100 -> True 》 num= 96+3 》 print:99
num:99 <= 100 -> True 》 num= 99+3 》 print:102 ???????????????
num:102 <= 100 -> False 》 结束
'''
4.使用循环计算12 34 …*10的结果。
print ( '===============第4题================' )
sum1 = 1
for num in range ( 1 , 11 ) :
sum1 *= num
print ( sum1)
'''
sum1:1
num:1 》 sum1=1*1=1
num:2 》 sum1=1*2=2
num:3 》 sum1=2*3=6
...
...
num:9 》 sum1=5040*9=40320
num:10 》 sum1=362880*10=3628800
'''
5.统计100以内个位数是2并且能够被3整除的数的个数。
print ( '===============第5题================' )
count = 0
for num in range ( 100 ) :
if num % 10 == 2 and num % 3 == 0 :
count += 1
print ( count)
'''
count:0
num:0 》 0%10 -> 0==2 -> False
num:1 》 1%10 -> 1==2 -> False
num:2 》 2%10 -> 2==2 -> True and 2%3 -> 2 == 0 -> False
...
num:12 》 12%10 -> 2==2 -> True and 12%3 -> 0==0 -> True 》 count:1
...
'''
count = 0
for num in range ( 0 , 100 , 3 ) :
if num % 10 == 2 :
count += 1
print ( count)
'''
count:0
num:0 -> 0%10:0 == 2 -> False
num:3 -> 3%10:3 == 2 -> False
..
num:12 -> 12%10:2 == 2 -> True 》 count:1
..
'''
count = 0
for num in range ( 2 , 100 , 10 ) :
if num % 3 == 0 :
count += 1
print ( count)
'''
count:0
num:2 》 2%3:2 ==0 -> False
num:12 》 12%3:0 ==0 -> True 》 count:1
num:22 》 22%3:1 ==0 -> False
...
num:42 》 42%3:0 ==0 -> True 》 count:2
...
'''
6.输入任意一个正整数,求他是几位数?
"""
123(3) - 123//10 -> 12//10 -> 1//10 -> 0
78(2) - 78//10 -> 7//10 -> 0
3(1) - 3//10 -> 0
0(1) - 0//10 -> 0
23424(5) - 23424//10 -> 2342//10 -> 234//10 -> 23//10 -> 2//10 -> 0
"""
print ( '===============第6题================' )
num = 10
count = 0
while True :
num //= 10
count += 1
if num == 0 :
break
print ( count)
'''
num:10, count:0
True 》 num:10 //10 -> num:1, count+1:1 》 num:1 ==0 -> False
True 》 num:0 //10 -> num:0, count+1:2 》 num:0 ==0 ->True 》 break 》 print(count:2)
'''
7.打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是
print ( '===============第7题================' )
for num in range ( 100 , 1000 ) :
ge = num % 10
shi = num // 10 % 10
bai = num // 100
if ge** 3 + shi** 3 + bai** 3 == num:
print ( num)
'''
num:100 》 ge=100%10: 0 》 shi=100//10%10: 0 》 bai=100//100: 1 》 0**3 + 0**3 + 1**3: 1 ==100 -> False
num:101 》 ge=101%10: 1 》 shi=101//10%10: 0 》 bai=101//100: 1 》 1**3 + 0**3 + 1**3: 2 ==101 -> False
num:102 》 ge=102%10: 2 》 shi=102//10%10: 0 》 bai=102//100: 1 》 2**3 + 0**3 + 1**3: 9 ==102 -> False
...
...
num:153 》 ge=153%10: 3 》 shi=153//10%10: 5 》 bai=153//100: 1 》 3**3:27 + 5**3:125 + 1**3:1: 153 ==153 -> True 》 print(num:153)
...
'''
8.判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
"""
思路:N是否是素数就看在2~N-1之间有没有一个数能够被N整除
"""
print ( '===============第8题================' )
num = 121
for x in range ( 2 , num) :
if num % x == 0 :
print ( '不是素数' )
break
else :
print ( '素数' )
for x in range ( 2 , int ( num** 0.5 ) + 1 ) :
if num % x == 0 :
print ( '不是素数' )
break
else :
print ( '素数' )
9.求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
"""
1月兔 2月兔 3月兔
1 0 0 1
0 1 0 1
1 0 1 2
1 1 1 3
2 1 2 5
3 2 3 8
5 3 5 13
"""
print ( '===============第9题================' )
n = 6
if n == 1 or n == 2 :
print ( 1 )
else :
p1 = p2 = 1
for x in range ( n- 3 ) :
p1, p2 = p2, p1+ p2
print ( p1+ p2)
'''
p1:1, p2:1
x:0 》 p1: 1, p2=1+1: 2 p1+p2: 3
x:1 》 p1: 2, p2=1+2: 3 p1+p2: 5
x:2 》 p1: 3, p2=2+3: 5 p1+p2: 8
x:3 》 p1: 5, p2=3+5: 8 p1+p2: 13
...
'''
10.输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
print ( '===============第10题================' )
for line in range ( 1 , 10 ) :
for col in range ( 1 , line+ 1 ) :
print ( col, '×' , line, '=' , col* line, end= ' ' )
print ( )
'''
line:1 》 col:1 》 col: 1 x line: 1 = 1 -> col == line 换行
line:2 》 col:1 》 col: 1 x line: 2 = 2
line:2 》 col:2 》 col: 2 x line: 2 = 4 -> col == line 换行
line:3 》 col:1 》 col: 1 x line: 3 = 3
line:3 》 col:2 》 col: 2 x line: 3 = 6
line:3 》 col:3 》 col: 3 x line: 3 = 9 -> col == line 换行
...
'''
11.这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
print ( '===============第11题================' )
for b in range ( 0 , 100 // 3 + 1 ) :
for m in range ( 0 , 100 // 2 + 1 ) :
s = 100 - b- m
if b* 3 + m* 2 + s* 0.5 == 100 :
print ( '大马:' , b, '中马:' , m, '小马:' , s)
'''
b:0 》 m:0 》 s:100 》 0*3 + 0*2 + 100*0.5: 50==100 -> False
b:0 》 m:1 》 s:99 》 0*3 + 1*2 + 99*0.5: 51.5==100 -> False
b:0 》 m:2 》 s:98 》 0*3 + 2*2 + 98*0.5: 53==100 -> False
...
b:1 》 m:0 》 s:99 》 1*3 + 0*2 + 99*0.5: 52.5==100 -> False
...
b:2 》 m:30 》 s:68 》 2*3 + 30*2 + 68*0.5: 100==100 -> True 》 print:2,30,68
...
'''