python分支和循环练习题
一、基础题
-
根据输入的成绩的范围打印
及格
或者不及格
。score = int(input("请输入成绩:")) if score >= 60: print("及格") else: print("不及格")
-
根据输入的年纪范围打印
成年
或者未成年
,如果年龄不在正常范围内(0~150)打印这不是人!
。age = int(input("请输入年龄:")) if 0 < age < 18: print("未成年") if age >= 18 and age < 150: print('成年') if age < 0 or age > 150: print("这不是人!") #不建议这样写,比较绕,也不简洁 #法二 age = int(input("请输入年龄:")) if age >= 18 and age < 150: print('成年') elif age < 18 and age > 0: print("未成年") else: print("这不是人") #法三:嵌套 if age < 0 or age > 150: print("这不是人") else: if age > = 18: print("成年") else: print("未成年")
-
输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息
a-b的结果不是奇数
。a = int(input("请输入a:")) b = int(input("请输入b:")) c = a-b if c % 2 != 0: print("奇数") else: print("不是奇数")
-
使用while循环输出 0~100内所有3的倍数。
#法一 num = 0 while True: print(num) num += 3 if num >= 100: break #法二 num = 0 while True: if num % 3 ==0: print(num) num += 1 if num >= 100: break
-
使用while循环输出0~100内所有的偶数。
num = 0 while True: if num % 2 ==0: print(num) num += 1 if num >= 100: break
二、进阶题
-
使用循环计算
1*2*3*4*...*10
的结果。num = 1 for x in range(1,11): num *= x print(num)
-
统计100以内个位数是2并且能够被3整除的数的个数。
#法一 count = 0 for x in range(100): if x % 10 == 2 and x % 3 ==0: count += 1 print(count) #法二 count = 0 for x in range(2,100,10): if x % 3 ==0: count += 1 print(count)
-
输入任意一个正整数,求他是几位数?
num = int(input("请输入正整数:")) while True: num //= 10 count += 1 if num == 0: break print(count) # 次数不确定,用while
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。for x in range(100,1000): bai = x // 100 shi = x // 10 % 10 ge = x % 10 if ge ** 3+shi **3+bai **3 == x: print(x)
三、挑战题
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
#其他的数:2~N-1 #方法1 num = 34 count = 0 for x in range(2,num): if num % x ==0: count += 1 break if count == 0: print(num,"是素数") else: print(num,"不是素数") #方法二 num = 34 count = 0 for x in range(2,int(num**0.5)+1): if num % x ==0: count += 1 break if count == 0: print(num,"是素数") else: print(num,"不是素数") # 16:1x16,2x8,4x4,16的开方最大是4 # 12:1x12,2x6,3x4,12的开方最大是3
-
求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
n1 = 1 n2 = 1 n = 8 if n >= 3: for x in range(n-3): s = n1 + n2 n1 = n2 n2 = s # n1, n2 = n2, n1+n2 print(n1 + n2) else: print(1)
-
输出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") # end \t是换行 print()
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for big in range(1,34): for mid in range(1,51): small = 100 - big -mid if samll % 2 == 1: continue if big *3 + mid *2 + small / 2 ==100: print("大:",big,"中:",mid,"小:",small)
day3作业-分支结构
-
写出判断⼀个数是否能同时被2和5整除的条件语句, 并且打印对应的结果。
# 方法一 num = 21 if num % 2 == 0 and num % 5 == 0: print("num可以同时被2和5整除") else: print("num不可以同时被2和5整除") #方法二 num = 10 if num % 10 == 0: print("num可以同时被2和5整除") else: print("num不可以同时被2和5整除")
-
写出判断⼀个数是否能够被2或者5整除,但是不能同时被2或者5整除的条件语句, 并且打印对应。
#法一 num1 = 20 if (num1 % 2 == 0 or num1 % 5 == 0) and (num % 10 != 0) : print("能") else: print("不能") #法二 if (num1 % 2 == 0 or num1 % 5 != 0) or (num1 % 2 != 0 or num1 % 5 == 0): print("能") else: print("不能")
-
假设今天的上课时间为15678秒,编程计算今天上课时间是多少⼩时,多少分钟,多少秒;以‘XX时XX分XX秒’的⽅式表示出来。
例如:100秒表示成**
0时1分40秒
**time = 15678 hour = time // 3600 m = time % 3600 // 60 # m = (t - h*3600) // 60 s = time % 60 print(h,"时",m,"分",s,"秒")
-
定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常!
公式:体重(kg) / (身⾼(m)的平⽅值) 在18.5 ~ 24.9之间属于正常。
输出格式:是否正常:True / False
high = 1.68 weight =60 num = weight / high **2 if 18.5 <= num <=24.9: print("True") else: print("False") #法二 high = 1.68 weight =60 print(18.5 <= weight / high **2 <=24.9)
-
写程序判断指定的整数(num)是否是水仙花数。
水仙花:一个三位,其各个位数的立方和等于这个数本身,比如:153是水仙花数,因为1^3 + 5^3 + 3^3 等于153
num = 153 bai = num // 100 shi = num // 10 % 10 ge = num % 10 if bai ** 3 + shi **3 + ge **3 ==num: print("是水仙花") else: print("不是水仙花")