5、流程控制
1、一家商场在降价促销,所有原价都是整数(不需要考虑浮点情况),如果购买金额50-100元(包含50元和100元)之间,会给10%的折扣,
如果购买金额大于100元会给20%折扣。编写一程序,询问购买价格,再显示出折扣(%10或
20%)和最终价格。
2 判断是否为闰年
提示:
-
输入一个有效的年份(如:2019),判断是否为闰年(不需要考虑非数字的情况)
-
如果是闰年,则打印“2019年是闰年”;否则打印“2019年不是闰年”
什么是闰年,请自行了解(需求文档没有解释)
3, 使用遍历循环完成剪刀石头布游戏,提示用户输入要出的拳 :石头(1)/剪刀(2)/布(3)/退出(4)
电脑随机出拳比较胜负,显示用户胜、负还是平局。运行如下图所示:
提示:电脑随机出拳
-
使用随机数,首先需要导入随机数的模块 —— “工具包”
-
import random
-
导入模块后,可以直接在 模块名称 后面敲一个"."然后按 Tab键,会提示该模块中包含的所有函数
-
random.randint(a, b),返回[a, b]之间的整数,包含a和b
random.randint(1, 10) # 生成的随机数n: 1 <= n <= 10
random.randint(4, 4) # 结果永远是 4
random.randint(25, 12) # 该语句是错误的,下限必须小于上限
4.求三个整数中的最大值
提示:三个整数使用input提示用户输入
5, 分别使用for和while打印九九乘法表
提示:
输出九九乘法表,格式如下:(每项数据之间空一个Tab键,可以使用"\t")
1 * 1 = 1 1 * 2 = 2 2 * 2 = 4 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
6,你的微信好友当中有 5 个推销的,他们存在一个列表 black_list=
['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机']
当中, 请把这 5 个人分别从 black_list 当中删除,最后 black_list 为空。
7,选做:不需要提交,不需要提交,不需要提交哦。
使用循环实现排序算法(冒泡,选择等算法选择一个,请自行了解。)
提示:利用for循环,完成a=[1,7,4,89,34,2]的排序(小的数字排前面,大的排后面),不能使用sort、sorted等内置函数或方法
"""
# TODO 数据运算、if、for、while、循环嵌套
1、一家商场在降价促销,所有原价都是整数(不需要考虑浮点情况),如果购买金额50-100元(包含50元和100元)之间,会给10%的折扣,
如果购买金额大于100元会给20%折扣。编写一程序,询问购买价格,再显示出折扣(%10或20%)和最终价格。
"""
# if 条件判断,有坑,小于50没明确。。。input结果是字符串,要数据类型转换
price = int(input("目前商场正在降价促销,请问这件衣服价格是多少元:"))
if 50 <= price <= 100:
print("目前这件衣服折扣为10%,您需要付款{}元".format(price * 0.9))
elif price > 100:
print("目前这件衣服折扣为20%,您需要付款{}元".format(price * 0.8))
else:
print("目前这件衣服目前没有折扣,您需要付款{}元".format(price))
"""
2.闰年 (历法中的名词)两种情况下是闰年
闰年是公历中的名词。闰年分为普通闰年和世纪闰年。
普通闰年①:公历年份是4的倍数的,且不是100的倍数,为闰年。(如2004年就是闰年);
世纪闰年:②公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是世纪闰年,2000年是世纪闰年);
"""
year = int(input("请输入一个有效的年份(如:2019),判断是否为闰年(不需要考虑非数字的情况):"))
# 根据闰年规则进行编程,普通年、世纪年
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): # 公历年份是4的倍数的,且不是100的倍数,为闰年
print("恭喜你输入的年份{}为闰年".format(year))
else:
print("很抱歉,你输入的年份{}不是闰年".format(year))
# 3.
while True:
choice = int(input("请输入您要出的券:石头(1)/剪刀(2)/布(3)/退出(4):"))
if choice == 4:
print("退出游戏")
break
computer_choice = random.randint(1, 3)
if (choice == 1 and computer_choice == 2) or (choice == 2 and computer_choice == 3) or (choice == 3 and computer_choice == 1):
print("我很厉害,赢了")
elif choice==computer_choice:
print("平局")
else:
print("失败")
# 4
# 方法2 将3个变量添加到list,排序比大小
while True:
try:
list_1 = [] # 定义一个空字典
for i in range(1, 4): # 循环3次
list_1.append(int(input(("请输入第{}个整数:").format(i)))) # 将变量添加进空列表
print("比较大小,排序前{}".format(list_1))
list_1.sort(reverse=True) # 降序排序
print("比较大小,排序后{}".format(list_1[0]))
break
except Exception as e:
print("您输入的不正确,报错如下:{}".format(e))
print("请重新输入")
# 方法3 使用max函数
list_1 = []
for i in range(1, 4):
list_1.append(int(input(("请输入第{}个整数:").format(i))))
max_num = max(list_1)
print("三个整数中最大值为:{}".format(max_num))
# 方法4 添加到字典,比较大小,交换值
list_1 = []
for i in range(1, 4):
list_1.append(int(input(("请输入第{}个整数:").format(i))))
length = len(list_1)
# print("列表长度为{}".format(length))
for x in range(length): # 外循环控制循环次数
for y in range(length - 1 - x): # 内循环控制循环到哪一位,需要减1,否则索引越界
if list_1[y] > list_1[y + 1]: # 比较大小
list_1[y], list_1[y + 1] = list_1[y + 1], list_1[y] # 将较大者交换到后面进行比较
print("三个整数中最大值为:{}".format(list_1[length - 1]))
# 5 乘法表
for x in range(1, 10): # 外循环控制循环次
for y in range(1, 10): # TODO 内循环控制循环到哪一位,x+1表示末尾被乘的是x
if y<=x:
print("{} * {} = {}".format(y, x, y*x), end="\t")
print() # 换行
# 是否可以不判断呢,可以,优化之后如下
for x in range(1, 10): # 外循环控制循环次
for y in range(1,x+1): # TODO 内循环控制循环到哪一位,x+1表示末尾被乘的是x
print("{} * {} = {}".format(y, x, y*x), end="\t")
print() # 换行
# # 方法2 while循环嵌套,搭配变量
# # TODO 变量初始化都在该while循环前定义,循环也在该while循环内递增/减
# a = 1
# while a < 10: # 循环9次
# b = 1
# while b <= a:
# print("{} * {} = {}\t\t".format(b, a, b * a), end="")
# b += 1 # 被乘数自增,使当前循环到a的值
# print(end="\n")
# a += 1 # 循环次数自增
# 特征:
# 同时取出2个数字,去进行操作,就会用到for 嵌套for...for
# 6
# 1.让black_list保持不变
# TODO 复制一个变量,使用切片复制
black_list = ['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机']
for i in black_list[:]:
black_list.remove(i) # 在这行进行断点调试
# 这里的black_list[:]内容是不会变的,每次从里面获取一个值根据这个值去删掉原来的数据
print(black_list)
# TODO 如果要修改,copy列表,强烈推荐使用切片复制
black_list = ['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机']
for i in black_list[:]:
black_list.pop(0) # 索引值固定每次删第一个或最后一个
print(black_list)
# for 循环嵌套,冒泡排序
a = [1, 7, 4, 89, 34, 2]
b = len(a)
for x in range(b): # 外循环控制循环次数
for y in range(b - 1 - x): # 内循环控制循环到哪一位,需要减1,否则索引越界
if a[y] > a[y + 1]: # 比较大小
a[y], a[y + 1] = a[y+1], a[y] # 将较大者交换到后面进行比较
print("for循环冒泡排序后的列表为:{}".format(a))
# while 循环嵌套,冒泡排序
a = [1, 7, 4, 89, 34, 2]
b = len(a)
c = 0
while c < b: # 外循环控制循环次数
d = 0
while d < b - 1 - c: # 内循环控制循环到哪一位,需要减1,否则索引越界
if a[d] > a[d + 1]: # 比较大小
a[d], a[d + 1] = a[d+1], a[d] # 将较大者交换到后面进行比较
d += 1
c += 1
print("while循环冒泡排序后的列表为:{}".format(a))