一、选秀评分
-
需求:某比赛评分规则如下:由 5 位评委进行打分,最终结果去掉一个最高分和最低分后求平均成绩。
-
代码:
list = [0,0,0,0,0] i = j = sum = 0 while i < 5: list[i] = input("请输入第 %s 位评委评分:" % (i + 1)) i += 1 maxItem = max(list) minItem = min(list) list.remove(maxItem) # 移除最大值 list.remove(minItem) # 移除最小值 for j in list: sum += int(j) print("去掉一个最高分 %s 分," % maxItem,end="") print("去掉一个最低分 %s 分," % minItem,end="") print("选手的最终得分为:%.2f 分。" % (sum / 3))
-
运行结果:
二、斐波那契数列
-
需求:输出斐波那契数列前 10 位。已知第 0 位是 0,第 1 位是 1。
-
代码:
i = num0 = 0 num1 = 1 print(num0,end="-") print(num1,end="-") # 循环条件终值为:期望位数 (10位) / 2 - 1 while i < 4: num0 += num1 num1 += num0 print(num0,end="-") print(num1,end="-") i += 1
-
运行结果:
三、打印九九乘法表
-
需求:输出传统的九九乘法表
-
代码:
i = j = 1 while i < 10: while j <= i: print(j,"*",i,"=",i * j,end=" ") j += 1 i += 1 j = 1 print()
-
运行结果:
四、鸡兔同笼问题
-
需求:输入鸡和兔总头数和总脚数,计算鸡和兔各有多少只。
-
代码:
''' head: 总头数 foot: 总脚数 chicken: 鸡的数量 rabbit: 兔的数量 ''' head = int(input("请输入鸡和兔的总头数:")) foot = int(input("请输入鸡和兔的总脚数:")) chicken = 1 while chicken <= head: rabbit = head - chicken if chicken * 2 + rabbit * 4 == foot: print("鸡有 %s 只" % chicken) print("兔有 %s 只" % rabbit) break chicken += 1 if chicken > head: print("不存在这种情况!")
-
运行结果:
五、打印素数
-
需求:打印 100 ~ 200 之间所有素数。若一个数能整除 2 到这个数的平方根内任意一个数,则这个数不是素数,反之是素数。
-
代码:
i = 100 j = 2 while i <= 200: while j <= i ** 0.5: if i % j == 0: break else: j += 1 if j > i ** 0.5: print(i,end=",") i += 1 j = 2
-
运行结果:
六、打印水仙花数
-
需求:打印 100 ~ 999 之间的水仙花数。一个三位数的各位数立方和等于这个数本身,则这个数是水仙花数。
-
代码:
i = 100 print("水仙花数:",end="") while i < 1000: a = i // 100 # 百位数 b = i // 10 % 10 # 十位数 c = i % 10 # 各位数 if a ** 3 + b ** 3 + c ** 3 == i: print(i,end=" ") i += 1
-
运行结果:
七、公因数与公倍数
-
需求:键盘输入两个数,计算两个数的最小公因数和最大公倍数。
-
代码:
num1 = int(input("请输入第一个数:")) num2 = int(input("请输入第二个数:")) arr0 = [] arr1 = [] # 保证 num1 < num2 if num1 > num2: t = num2 num2 = num1 num1 = t # 最大公因数 i = 1 while i < num2: if num1 % i == 0 and num2 % i == 0: arr0.append(i) i += 1 # 最小公倍数 j = num2 while j <= num1 * num2: if j % num1 == 0 and j % num2 == 0: arr1.append(j) j += 1 print("{} 和 {} 的最大公因数是:{}".format(num1,num2,max(arr0))) print("{} 和 {} 的最小公倍数是:{}".format(num1,num2,min(arr1)))
-
运行结果:
八、判断天数
-
需求:
- 禁止使用时间工具
- 键盘输入年月日,判断并打印这一天是本年的第几天及本年剩余天数
-
代码:
# 判断闰年函数 def judgeYear(y): if y % 400 == 0 or y % 4 == 0 and y % 100 != 0: return True return False # 求和函数 def sumDay(list): sum = 0 for i in list: sum += i return sum # 定义每个月的天数。索引 0 是当年的总天数 yDay = [365,31,28,31,30,31,30,31,31,30,31,30,31] y = int(input("请输入年份:")) m = int(input("请输入月份:")) d = int(input("请输入日期:")) # 如果数闰年,修改列表 if judgeYear(y): yDay[0] = 366 yDay[2] = 29 days = sumDay(yDay[1:m]) + d surplus = yDay[0] - days print("{} 年 {} 月 {} 日是 {} 年的第 {} 天".format(y,m,d,y,days)) print("{} 年 {} 月 {} 日距离新年还有 {} 天".format(y,m,d,surplus))
-
运行结果:
九、计算阶乘
-
需求:键盘输入一个数,求这个数的阶乘。
-
代码:
num = int(input("请输入求阶乘的数字:")) i = j = 1 while i <= num: j *= i i += 1 print(j)
-
运行结果:
十、排序
-
需求:使用 max() 和 min() 给列表中的数据进行排序。键盘输入排序规则。
-
代码:
# 定义排序变量 def sort(ty): list = [11,5,22,31,9,4,17,26,41,7] orList = [] i = 0 while i < len(list): if ty == 0: num = min(list) else: num = max(list) orList.append(num) list.remove(num) if len(list) == 0: break return orList # 输出参数,调用函数 ty = int(input("请输入 0 或 1 表示排序规则,0-升序,1-降序:")) print(sort(ty)) print() # 输出参数,调用函数 ty = int(input("请输入 0 或 1 表示排序规则,0-升序,1-降序:")) print(sort(ty))
-
运行结果: