练习题_数据类型2(Python)

博客围绕Python数据类型展开,包含多个代码练习。有统计字符串中字符及其个数的实现,涉及列表和字典;有循环提示用户输入并追加到列表的操作;还有对列表元素按大小分类存入字典,以及使用集合对经理和技术员列表进行计算等内容。

1.写一个代码片段统计一个字符串中出现的字符及其个数。(至少2种方式:分别使用列表和字典来实现)

例如对于字符串“abcaaabcd”,统计的结果是:a(4个)b(2个)c(2个)d(1个)

2.循环提示用户输入,并将输入内容追加到列表中(如果输入N或n则停止循环),输入结束打印列表

如果用户输入的信息已经存在,则提示用户所输内容已存在,不再重复添加。

提示:对于输入内容,需要考虑大小写和空格的情况

3.有如下值 li= [11,22,33,44,55,66,77,88,99,90] ,将所有大于 66 的值保存至字典的第一个key对应的列表中,将小于 66 的值保存至第二个key对应的列表中。打印输出result。

result = {‘k1’:[],‘k2’:[]}

4.经理:[曹操,刘备,孙权]。 技术员:[曹操,刘备,张飞,关羽]。

使用两个列表分别存储经理与技术员。

使用集合计算:

(1) 即是经理也是技术员的有谁?

(2) 是经理,但不是技术员都有谁?

(3) 是技术员,但不是经理都有谁?

(4)张飞是经理吗?

(5) 身兼一职的都有谁?

(6) 经理和技术员共有几个人?

【综合练习】

现有商品列表如下:

   1. products =  [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]],需打印出以下格式:
------  商品列表 ------
0  iphone    6888
1  MacPro    14800
2  小米6      2499
3  Coffee    31
4  Book      60
5  Nike      699
2.	提示用户输入预算,并在每次购买时查看余额是否充足。不足时,提示“余额不足”。

3.	根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终用户输入q退出时,打印购买的商品列表。
4.	购买结束时,输出全部购买产品的编码、名称、单价和数量,并在最后集中显示“总计”和“余额”
例如:
请输入您的预算:10000
------  商品列表 ------
0  iphone    6888
1  MacPro    14800
2  小米6      2499
3  Coffee    31
4  Book      60
5  Nike      699
请选择您要购买的商品编码:1
您的余额不足。
------  商品列表 ------
0  iphone    6888
1  MacPro    14800
2  小米6      2499
3  Coffee    31
4  Book      60
5  Nike      699
请选择您要购买的商品编码:0
已将iphone放入购物车。
------  商品列表 ------
0  iphone    6888
1  MacPro    14800
2  小米6      2499
3  Coffee    31
4  Book      60
5  Nike      699
请选择您要购买的商品编码:q
------  购物清单 ------
编码	   商品名称   单价   数量	
0  		iphone    6888	 1
----------------------------
总计                   6888元
余额                   3112元
感谢您的惠顾。
# @Time:2020/12/16 14:39
# @Author:李 祥
# @File:task5.py
# @Software:PyCharm

# 1.写一个代码片段统计一个字符串中出现的字符及其个数。(至少2种方式:分别使用列表和字典来实现)
# 方法一:
# str1 = input("请输入你要计算的字符串:")
# list1 = list(str1)
# set1 = set(list1)
# for i in set1:
#     print(f"{i}:{list1.count(i)}")

# 方法二:
# str1 = input("请输入你要计算的字符串:")
# res = {}
# for i in str1:
#     if i in res:
#         res[i] += 1
#     else:
#         res[i] = 1
# print(res)

# 2.循环提示用户输入,并将输入内容追加到列表中(如果输入N或n则停止循环),输入结束打印列表
# list1 = []
# while True:
#     str1 = input("请输入内容:")
#     if str1 in ["n", "N"]:
#         break
#     elif str1 in list1:
#         print("输入内容重复")
#     else:
#         list1.append(str1)
# print(list1)

# 3.有如下值 li= [11,22,33,44,55,66,77,88,99,90] ,将所有大于 66 的值保存至字典的第一个key对应的列表中,将小于 66 的值保存至第二个key对应的列表中。打印输出result。
# list1 = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
# result = {'k1': [], 'k2': []}
# for i in list1:
#     if i > 66:
#         result['k1'].append(i)
#     elif i < 66:
#         result['k2'].append(i)
# print(result)

"""
4.经理:[曹操,刘备,孙权]。 技术员:[曹操,刘备,张飞,关羽]。
  使用两个列表分别存储经理与技术员。
  使用集合计算:
(1) 即是经理也是技术员的有谁?
(2) 是经理,但不是技术员都有谁?
(3) 是技术员,但不是经理都有谁?
(4)张飞是经理吗?
(5) 身兼一职的都有谁?
(6) 经理和技术员共有几个人?
"""
# list1 = ["曹操", "刘备", "孙权"]
# list2 = ["曹操", "刘备", "张飞", "关羽"]
# print("(1)", set(list1) & set(list2))
# print("(2)", set(list1) - (set(list1) & set(list2)))
# print("(3)", set(list2) - (set(list1) & set(list2)))
# print("(4)张飞是经理") if "张飞" in list1 else print("(4)张飞不是经理")
# print("(5)", set(list1) ^ set(list2))
# print("(6)", len(set(list1) | set(list2)))

# 综合练习
products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60], ["Nike", 699]]
money = input("请输入你的预算:")
print("商品列表".center(30, "-"))
for i in range(len(products)):
    print(i, end="  ")
    print(f"{products[i][0]:<10}", end="")
    print(f"{products[i][1]:<6}")
list1 = []
list2 = []
total = 0
while True:
    str1 = input("想购买什么(商品编号):")
    if str1 == "q":
        break
    else:
        if eval(money) - products[eval(str1)][1] <= total:
            print("余额不足")
        else:
            list1.append(products[eval(str1)])
            list2.append(products[eval(str1)][0])
            print(f"已将{products[eval(str1)][0]}放入购物车")
            total += products[eval(str1)][1]
dict1 = dict(list1)

print("购物车".center(30, "-"))
print("编码 商品        单价  数量")
for i, j in enumerate(dict1.keys()):
    print(i, end="   ")
    print(f"{j:<10}", end="")
    print(f"{dict1[j]:>6}", end="    ")
    print(list2.count(str(j)))

print("-" * 30)
print("总价", f"{total:>30}")
if eval(money) - total < 0:
    print("您的余额不足。")
else:
    print("余额", f"{(eval(money) - total):>30}")

### Python综合数据类型练习题 以下是关于Python综合数据类型练习题,涵盖列表、字典、集合、元组等数据结构的使用与操作。这些问题旨在帮助用户巩固对Python数据类型的理解,并提升实际编程能力。 #### 练习题 1:列表操作 给定一个列表 `my_list = [1, 2, 3, 4, 5]`,请完成以下任务: - 将列表中的所有元素加倍。 - 删除列表中的最后一个元素。 - 在列表开头插入数字 `0`。 **答案**: ```python my_list = [1, 2, 3, 4, 5] my_list = [x * 2 for x in my_list] # 列表推导式[^1] del my_list[-1] # 删除最后一个元素[^1] my_list.insert(0, 0) # 插入元素[^1] print(my_list) ``` --- #### 练习题 2:字典操作 给定一个字典 `my_dict = {'a': 1, 'b': 2, 'c': 3}`,请完成以下任务: - 将键 `'d'` 添加到字典中,值为 `4`。 - 遍历字典的所有键和值,并打印出来。 - 删除键 `'b'`。 **答案**: ```python my_dict = {'a': 1, 'b': 2, 'c': 3} my_dict['d'] = 4 # 添加键值对[^1] for key, value in my_dict.items(): # 遍历字典[^1] print(f"Key: {key}, Value: {value}") del my_dict['b'] # 删除键 print(my_dict) ``` --- #### 练习题 3:集合操作 给定两个集合 `set1 = {1, 2, 3, 4}` 和 `set2 = {3, 4, 5, 6}`,请完成以下任务: - 找出两个集合的交集。 - 找出两个集合的并集。 - 找出两个集合的差集(`set1 - set2`)。 **答案**: ```python set1 = {1, 2, 3, 4} set2 = {3, 4, 5, 6} intersection = set1 & set2 # 交集 union = set1 | set2 # 并集 difference = set1 - set2 # 差集[^1] print(f"Intersection: {intersection}") print(f"Union: {union}") print(f"Difference: {difference}") ``` --- #### 练习题 4:元组操作 给定一个元组 `my_tuple = (1, 2, 3, 4, 5)`,请完成以下任务: - 打印元组中的第二个元素。 - 将元组转换为列表,并修改第一个元素为 `0`。 - 再将列表转换回元组。 **答案**: ```python my_tuple = (1, 2, 3, 4, 5) print(my_tuple[1]) # 打印第二个元素[^1] my_list = list(my_tuple) # 转换为列表 my_list[0] = 0 # 修改第一个元素 new_tuple = tuple(my_list) # 转换回元组[^1] print(new_tuple) ``` --- #### 综合练习题 给定以下数据结构: ```python data = { "students": [ {"name": "Alice", "age": 20, "grades": [85, 90, 95]}, {"name": "Bob", "age": 22, "grades": [70, 80, 85]}, {"name": "Charlie", "age": 21, "grades": [92, 94, 98]} ] } ``` 请完成以下任务: - 找出所有学生的平均成绩。 - 找出成绩最高的学生及其对应的平均成绩。 **答案**: ```python data = { "students": [ {"name": "Alice", "age": 20, "grades": [85, 90, 95]}, {"name": "Bob", "age": 22, "grades": [70, 80, 85]}, {"name": "Charlie", "age": 21, "grades": [92, 94, 98]} ] } # 计算所有学生的平均成绩 for student in data["students"]: avg_grade = sum(student["grades"]) / len(student["grades"]) # 平均成绩计算[^1] student["avg_grade"] = avg_grade # 找出成绩最高的学生 max_student = max(data["students"], key=lambda x: x["avg_grade"]) # 使用max函数 print(f"Highest Avg Grade Student: {max_student['name']}, Avg Grade: {max_student['avg_grade']}") ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值