练习题
1.企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20
万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万
元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万
元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放
奖金总数?
# 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20 # 万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20 # 万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于 # 60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I, # 求应发放奖金总数? # 定义一个变量, I = float(input("请输入当月利润I:")) # 定义一个变量,保存奖金 ret = 0 # 判断 if I <= 10: ret = I * 0.10 elif 10 < I < 20: ret = (I - 10) * 0.075 + 10 * 0.10 elif 20 <= I < 40: ret = (I - 20) * 0.05 + 10 * 0.075 + 10 * 0.10 elif 40 <= I < 60: ret = 10 * 0.075 + 10 * 0.10 + 20 * 0.05 + (I - 40) * 0.03 elif 60 <= I < 100: ret = 10 * 0.075 + 10 * 0.10 + 20 * 0.05 + 20 * 0.03 + (I - 60) * 0.015 elif I >= 100: ret = 10 * 0.075 + 10 * 0.10 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (I - 100) * 0.01 print("应发放奖金总数为%.2f" % ret)
2.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
for i in range(100, 1000): bai_wei = i // 100 shi_wei = (i-bai_wei*100) // 10 geg_wei = (i - bai_wei*100 - shi_wei * 10) // 1 # print(i, bai_wei, shi_wei, geg_wei) if bai_wei**3 + shi_wei**3 + geg_wei**3 == i: print(i)
# 注意
# 代码从上往下执行,特别注意个位,十位和百位的顺序,否则程序将会报错
3.
判断101-200之间有多少个素数,并输出所有素数.
提示:使用for...else...,如果一个数只能被1和它本身整除,那么这个数是素数
# 判断101-200之间有多少个素数,并输出所有素数. # 提示:使用for...else...,如果一个数只能被1和它本身整除,那么这个数是素数 f = 0 for i in range(101, 201): for j in range(2, i): if i % j == 0: break else: f += 1 print(i) print("素数个数为:%d" % f)
4.体质指数(BMI)=体重(kg)÷身高^2(m)(公式),
过轻:低于18.5
正常:18.5-23.9
过重:24-27
肥胖:28-32
非常肥胖, 高于32
请根据如上,条件写出一段代码,要求实现用户输入身高和体重,输出结果相应结果,并给出相应意见(自己阐述)。
# 体质指数(BMI)=体重(kg)÷身高^2(m)(公式), # 过轻:低于18.5 # 正常:18.5-23.9 # 过重:24-27 # 肥胖:28-32 # 非常肥胖, 高于32 # 请根据如上,条件写出一段代码,要求实现用户输入身高和体重,输出结果相应结果,并给出相应意见(自己阐述)。 # 定义一个变量,引导用户输入身高 height = float(input("请输入您的身高:")) # 定义一个变量,引导用户输入体重 ti_zhong = float(input("请输入您的体重:")) # 打印身高和体重 print(height, ti_zhong) BMI = ti_zhong / (height ** 2) BMI = float("%.1f" % BMI) print(BMI) # 判断 if BMI < 18.5: print("过轻") elif 18.5 <= BMI <= 23.9: print("正常") elif 24 <= BMI <= 27: print("过重") elif 28 <= BMI <= 32: print("非常肥胖") elif BMI > 32: print("过度肥胖")
5.要求使用for 循环和continue 打印1-100中的奇数。
f = 0 for i in range(1, 101): if i % 2 == 0: continue else: f += 1 print(i) print("1-100中的奇数有:%d个" % f)
6.完成可以无限次玩的剪刀石头布,每局并且输入quit或者exit时退出游戏
# 完成可以无限次玩的剪刀石头布,每局并且输入quit或者exit时退出游戏 # 玩家VS电脑 # 假设:剪刀,石头,布分别为(0,1,2) # 赢 # 玩家为剪刀时,电脑出布,当玩家出石头时,电脑出剪刀,当玩家出布时,电脑出石头 # 平局 # 玩家和电脑出拳一样时为平局 # 输了 # 否则玩家输了 # 定义变量,引导用户输入拳法 import random while True: # 玩家输入 p = int(input("请出拳(0.剪刀,1.石头,2.布):")) # 判断是否需要退出 if p == "exit" or p == "quit": print("游戏结束!") break c = random.randint(0,3) if ((p == 0 and c == 2) or (p == 1 and c == 0) or (p == 2 and c == 1)): print("你赢了,你出的是%d===========电脑出的是%d" % (p, c)) elif p == c: print("平局,你们出的都是%d" % p) else: print("你输了,你出的是%d===========电脑出的是%d" % (p, c))
7.使用for循环打印如下图形:
* * * * * * * * * * * * * * *
for i in range(1, 6): for j in range(1, 7 - i): print("* ", end="") print()
或者使用while循环:
i = 1 # 控制外层循环 while i <= 5: # 每行打印的星星的数量 j = 6 - i while j >= 1: print("*", end=" ") j -= 1 print() i += 1
8.使用while循环输出如下图形:
* * * * * * * * * * * * * * * * * * * * * * * * *
使用for循环:
for i in range(1, 10): if i <= 5: for j in range(1, i + 1): print("*", end=" ") print() else: for j in range(1, 11 - i): print("*", end=" ") print()
使用while循环;
i = 1 while i <= 9: # 前五行 if i <= 5: j = 1 while j <= i: print("*", end=" ") j += 1 print() # 后四行 else: j = 10 - i while j >= 1: print("*", end=" ") j -= 1 print() i += 1
9.使用while,完成以下图形的输出:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
使用for循环:
for i in range(1, 10): if i <= 5: k = 5 - i x = 2 * i - 1 for k in range(1, 6 - i): print(" ", end=" ") for x in range(1, 2 * i): print("*", end=" ") print() else: # 每行打印的空格数 k = i - 5 # 每行打印的星星数 x = 2 * (10 - i) - 1 # 打印空格 for k in range(1, i - 4): print(" ", end=" ") # 打印星星 for x in range(1, 2 * (10 - i)): print("*", end=" ") # 打印完当前行,换行 print()
使用while循环:
i = 1 while i <= 9: # 前五行 if i <= 5: # 每行打印空格数 k = 5 - i # 每行打印的星星数 x = 2 * i - 1 # 打印空格 while k >= 1: print(" ", end=" ") k -= 1 # 打印星星 while x >= 1: print("*", end=" ") x -= 1 # 打印完当前行,换行 print() i += 1 # 后四行 else: # 每行打印的空格数 k = i - 5 # 每行打印的星星数 x = 2 * (10 - i) - 1 # 打印空格 while k >= 1: print(" ", end=" ") k -= 1 # 打印星星 while x >= 1: print("*", end=" ") x -= 1 # 打印完当前行,换行 print() i += 1
10.设计“过7游戏”的程序, 打印出1-100之间除了含7和7的倍数之外的所有数字。
for i in range(1, 101): # 能被7整除:i % 7 == 0 # 个位为7:i % 10 == 7 # 十位为7:i // 10 == 7 if i % 7 == 0 or i % 10 == 7 or i // 10 == 7: continue print(i, end=', ')
11.现有一字符串a = “abcdefg”,将字符串中的元素逐个输出,并且在输出的时候如果字母是b则显示B
a = "abcdefg" for c in a: if c == "b": print("B") continue print(c)
12.公交车:我做607上下班,每天时间比较紧,公交车大概50分钟,单程1元,如果打车的话单程30块,
大概25分钟,如果先骑车然后做地铁的话会大改38分钟,4元钱, 根据条件编写程序程序,小华每天8
点30上班,身上有60元钱,问那个线路比较划算?小华7点50出门?如果是7点45出门呢?
money = int(input("请输入钱数:")) time_z = int(input("请输入上班时间:")) if time_z >= 50: if money > 30: print("可以打车") if money > 4: print("可以做地铁") if money > 1: print("坐公交最省钱") elif 50 >= time_z > 38: if money > 30: print("可以打车") if money > 4: print("做地铁最省钱") elif 38 >= time_z > 25: if money > 30: print("打车还有救") else: print("今天会迟到")