实验3 控制语句与组合数据类型应用编程
1. 知道Python中组合数据类型字符串(str)、列表(list)、元组(tuple)、集合(set)、字典的表示、特性
2. 能够正确、熟练使用字符串(str)、列表(list)、元组(tuple)、集合(set)、字典的常用操作
3. 针对具体问题场景,能够灵活、组合使用多种数据类型,应用或设计算法,使用控制语句编程解决实际问题
二 . 实验内容
1.试验任务1:
在Python开发环境下,输入并运行以下代码。重复运行几次,观察结果,回答问题。
task1.py
源代码:
import random
print('用列表存储随机整数')
lst = [random.randint(0,100) for i in range (5)]
print(lst)
print('\n用集合存储随机整数')
s1 = {random.randint(0,100) for i in range(5)}
print(s1)
print('\用集合存储随机整数:')
s2 = set()
while len(s2) <5:
s2.add(random.randint(0,100))
print(s2)
问题1:random.randint(0,100)生成的随机整数范围是?能否取到100?
答:随机数的范围是0 <=s<=100,并且能够取到100
问题2:利用list(range(5))生成的有序序列范围是?是否包括5?
答:范围是0<=s<5,不包括5
利用list(range(1,5))生成的有序序列范围是?是否包括5?
答:范围是1<=s<5,不包括5
问题3:使用line8代码生成的集合s1,len(s1)一定是5吗?如果不是,请解释原因。
答不一定是5
问题4:使用line12- 14生成的集合s2,len(s2)一定是5吗?如果不是,请解释原因。
答:len(s2)一定是5
试验任务2:
对字符串、列表、元组、集合、字典进行遍历,获取每一个数据项,是数据处理的基础。
task2_1.py:
实验源码:
'列表遍历
lst = [55, 92, 88, 79, 96]
# 遍历方式1: 使用while + 索引
i = 0
while i < len(lst):
print(lst[i], end = ' ')
i += 1
print()
# 遍历方式2:使用for + 索引
for i in range(len(lst)):
print(lst[i], end = ' ')
print()
# 遍历方式3: 使用for...in
for i in lst:
print(i , end = ' ')
print()
实验截图:
task2_2.py:
# 字典遍历
book_info = {'isbn': '978-7-5356-8297-0',
'书名': '白鲸记',
'作者': '克里斯多夫.夏布特',
'译者': '高文婧',
'出版社': '湖南美术出版社',
'售价': 82
}
# 遍历key-value对:实现方式1
for key, value in book_info.items():
print(f'{key}: {value}')
print()
# 遍历key-value对:实现方式2
for item in book_info.items():
print(f'{item[0]}: {item[1]}')
print()
# 遍历值:实现方式1
for value in book_info.values():
print(value, end = ' ')
print()
# 遍历值: 实现方式2
for key in book_info.keys():
print(book_info[key], end = ' ')

task 2_3
book_infos = [{'书名': '昨日的世界', '作者': '斯蒂芬.茨威格'},
{'书名': '局外人', '作者': '阿尔贝.加缪'},
{'书名': '设计中的设计', '作者': '原研哉'},
{'书名': '万历十五年', '作者': '黄仁宇'},
{'书名': '刀锋', '作者': '毛姆'}
]
n=1
for i in book_infos:
print(n,'.''《'+i['书名']+'》',i['作者'])
n=n+1

task4_
title='专业学号信息'
print(title.center(50,'-'))
code_majors={8326:'地信类',8329:'计算机类',8330:'气科类',8336:'防灾工程',8345:'海洋科学',8382:'气象工程'}
for key,value in code_majors.items():
print(f'{key}:{value}')
while True:
id = input('请输入学号:')
if id=='#':
print('查询结束...')
break
major = int(id[4:8])
if major in code_majors.keys():
print(f'专业是:{code_majors[major]}')
else:
print('不在这些专业中...')
task5
import random
xO = random.randint(1,31)
print('猜猜2023年5月哪一天是你的lucky day😀')
x=int(input('你有三次机会,猜吧(1-31):'))
if x == xO :
print('哇,猜中了🤣')
else:
for i in range(2):
if x>xO:
print('猜晚了,你的lucky day已经过了')
x = int(input('再猜(1-31):'))
elif x<xO:
print('猜早了,你的lucky day还没过呢')
x = int(input('再猜(1-31):'))
else:
print('哇,猜中了🤣')
break
else:
print('次数用光啦,偷偷告诉你,5月你的lucky day是',xO,'号.good luck')

task8:
#欢迎信息
print('欢迎使用家用电器销售系统!')
#商品数据初始化
products=[
{'id':'0001','name':'电视机','brand':'海尔','price':5999.00,'count':20},
{'id':'0002','name':'冰箱','brand':'西门子','price':6998.00,'count':15},
{'id':'0003','name':'洗衣机','brand':'小天鹅','price':1999.00,'count':10},
{'id':'0004','name':'空调','brand':'格力','price':3900.00,'count':0},
{'id':'0005','name':'热水器','brand':'格力','price':688.00,'count':30},
{'id':'0006','name':'笔记本','brand':'联想','price':5699.00,'count':10},
{'id':'0007','name':'微波炉','brand':'苏泊尔','price':480.00,'count':33},
{'id':'0008','name':'投影仪','brand':'松下','price':1250.00,'count':12},
{'id':'0009','name':'吸尘器','brand':'飞利浦','price':999.00,'count':9},
]
#初始化用户购物车
products_cart = []
option = input('请选择您的操作:1-查看商品;2-购物;3—查看购物车;其他-结账')
while option in['1','2','3']:
if option == '1':
#产品信息列表
print('产品和价格信息如下:')
print('************************************************')
print('%-10s'%'编号','%-10s'%'名称','%-10s'%'品牌','%-10s'%'价格','%-10s'%'库存数量')
print('-------------------------------------------------')
for i in range(len(products)):
print('%-10s'%products[i]['id'],'%-10s'%products[i]['name'],
(products[i]['brand']),
'%-10.2f'%products[i]['price'],
'%-10d'%products[i]['count'])
print('-------------------------------------------------')
elif option == '2':
product_id = input('请输入您要购买的产品编号:')
while product_id not in [item['id'] for item in products]:
product_id = input('编号不存在,请重新输入您要购买的产品编号:')
count = int(input('请输入您要购买的产品数量:'))
while count>products[int(product_id)-1]['count']:
count=int(input('数量超出库存,请重新输入您要购买的产品数量:'))
#将所购买的商品加入购物车
if product_id not in [item['id'] for item in products_cart]:
products_cart.append({'id':product_id,'count':count})
else:
for i in range(len(products_cart)):
if products_cart[i].get('id') == product_id:
products_cart[i]['count']+=count
#更新商品列表
for i in range(len(products)):
if products[i]['id'] == product_id:
products[i]['count'] -= count
else:
print('购物车信息如下:')
print('*************************************')
print('%-10s'%'编号','%-10s'%'购买数量')
print('-------------------------------------')
for i in range(len(products_cart)):
print('%-10s'%products_cart[i]['id'],'%6d'%products_cart[i]['count'])
print('-------------------------------------')
option = input('操作成功!请选择你的操作:1-查看商品;2-购物;3-查看购物车;其他-结账')
#计算金额
if len(products_cart)>0:
amount = 0
for i in range(len(products_cart)):
product_index = 0
for j in range(len(products)):
if products[j]['id'] == products_cart[i]['id']:
product_index = j
break
price = products[product_index]['price']
count = products_cart[i]['count']
amount+=price*count
if 5000<amount<=10000:
amount = amount * 0.95
elif 10000<amount<=20000:
amount = amount * 0.90
elif amount > 20000:
amount = amount*0.85
else:
amount = amount*1
print('购买成功,您需要支付{:.2f}元'.format(amount))
#退出系统
print('谢谢您的光临,下次再见!')

8-2
#欢迎信息
print('欢迎使用家用电器销售系统!')
#商品数据初始化
products=[
{'id':'0001','name':'电视机','brand':'海尔','price':5999.00,'count':20},
{'id':'0002','name':'冰箱','brand':'西门子','price':6998.00,'count':15},
{'id':'0003','name':'洗衣机','brand':'小天鹅','price':1999.00,'count':10},
{'id':'0004','name':'空调','brand':'格力','price':3900.00,'count':0},
{'id':'0005','name':'热水器','brand':'格力','price':688.00,'count':30},
{'id':'0006','name':'笔记本','brand':'联想','price':5699.00,'count':10},
{'id':'0007','name':'微波炉','brand':'苏泊尔','price':480.00,'count':33},
{'id':'0008','name':'投影仪','brand':'松下','price':1250.00,'count':12},
{'id':'0009','name':'吸尘器','brand':'飞利浦','price':999.00,'count':9},
]
#初始化用户购物车
products_cart = []
option = input('请选择您的操作:1-查看商品;2-购物;3—查看购物车;其他-结账')
while option in['1','2','3']:
if option == '1':
#产品信息列表
print('产品和价格信息如下:')
print('************************************************')
print(print('{:<10}'.format('编号'),'{:<10}'.format('名称'),'{:<10}'.format('品牌'),'{:<10}'.format('价格'),'{:<10}'.format('库存数量')))
print('-------------------------------------------------')
for i in range(len(products)):
print('{:<10}'.format(products[i]['id']),'{:<10}'.format(products[i]['name']),'{:<10}'.format
(products[i]['brand']),
'{:<10}'.format(products[i]['price']),
'{:<10}'.format(products[i]['count']))
print('-------------------------------------------------')
elif option == '2':
product_id = input('请输入您要购买的产品编号:')
while product_id not in [item['id'] for item in products]:
product_id = input('编号不存在,请重新输入您要购买的产品编号:')
count = int(input('请输入您要购买的产品数量:'))
while count>products[int(product_id)-1]['count']:
count=int(input('数量超出库存,请重新输入您要购买的产品数量:'))
#将所购买的商品加入购物车
if product_id not in [item['id'] for item in products_cart]:
products_cart.append({'id':product_id,'count':count})
else:
for i in range(len(products_cart)):
if products_cart[i].get('id') == product_id:
products_cart[i]['count']+=count
#更新商品列表
for i in range(len(products)):
if products[i]['id'] == product_id:
products[i]['count'] -= count
else:
print('购物车信息如下:')
print('*************************************')
print('{:<10}'.format('编号'),'{:<10}'.format('购买数量'))
print('-------------------------------------')
for i in range(len(products_cart)):
print('{:<10}'.format(products_cart[i]['id']),'{:<6}'.format(products_cart[i]['count']))
print('-------------------------------------')
option = input('操作成功!请选择你的操作:1-查看商品;2-购物;3-查看购物车;其他-结账')
#计算金额
if len(products_cart)>0:
amount = 0
for i in range(len(products_cart)):
product_index = 0
for j in range(len(products)):
if products[j]['id'] == products_cart[i]['id']:
product_index = j
break
price = products[product_index]['price']
count = products_cart[i]['count']
amount+=price*count
if 5000<amount<=10000:
amount = amount * 0.95
elif 10000<amount<=20000:
amount = amount * 0.90
elif amount > 20000:
amount = amount*0.85
else:
amount = amount*1
print('购买成功,您需要支付{:.2f}元'.format(amount))
#退出系统
print('谢谢您的光临,下次再见!')


浙公网安备 33010602011771号