(十)Python学习之基本数据类型及其常用操作练习(3)

(十)Python学习之基本数据类型及其常用操作练习(3)

练习11
用户交互显示类似省市县N级联动的选择:
a.允许用户增加内容;
b.允许用户选择查看某一个级别的内容。

dic = {
    "江西": {
        "萍乡": ["安源", "彭高", "上栗"],
        "新余": ["良山", "新钢", "兴安岭"],
    },
    "北京": {
        "大兴区": ["礼贤镇", "魏善庄镇", "北臧村镇"],
        "昌平区": ["沙河", "化庄", "白浮泉"],
    },
    "福建": {
        "莆田": ["荔城", "西天尾", "九化山"],
        "厦门": ["湖里", "思明", "海仓"],
    }
}
print("目前可查询的省份:江西、北京、福建")
province = input("请输入省份或者输入N新建: ")
if province == "N":
    new_province = input("请输入省份:")
    new_city = input("请输入城市:")
    new_town = input("请输入城镇信息:")
    dic[new_province] = {new_city: [new_town]}
while province not in dic:
    print("输入错误省份,请从新输入")
    province = input("请输入省份或者输入N新建: ")
while province in dic:
    new_menu = dic[province]
    for k in new_menu:
        print(k, end="\n")
    choice_city = input("请输入城市:")
    if choice_city not in new_menu:
        print("错误城市输入,请从新输入: ")
        continue
    else:
        new_menu2 = new_menu.get(choice_city)
        for i in new_menu2:
            print(i, end="\n")
        choice_town = input("请输入城镇信息:")
        if choice_town in new_menu2:
            print(
                "信息输入正确,省份:{},城市:{},城镇:{}".format(
                    province,
                    choice_city,
                    choice_town))
            break

在这里插入图片描述
练习12
列举布尔值是False的所有值。
None,False(布尔类型),0(所有的值为零的数),""(空字符串),,()(空元组),{}(空字典)
练习13
有两个列表
l1 = [11, 22, 33]
l2 = [22, 33, 44]
a.获取内容相同的元素列表;
b.获取l1中有,l2中没有的元素列表;
c.获取l2中有,l1中没有的元素列表;
d.获取l1和l2中内容不同的元素。

l1 = [11, 22, 33]
l2 = [22, 33, 44]
a = []
for i in l1:
    for j in l2:
        if i == j:
            a.append(i)
print(a)
b = []
for i in l1:
    flag = 0
    for j in l2:
        if i == j:
            flag = 1;
    if flag == 0:
        b.append(i)
print(b)
c = []
for i in l2:
    flag = 0
    for j in l1:
        if i == j:
            flag = 1;
    if flag == 0:
        c.append(i)
print(c)
d = []
for i in b:
    d.append(i)
for i in c:
    d.append(i)
print(d)

在这里插入图片描述
练习14
利用for循环和range输出:
a.for循环从大到小输出1-100;
b.for循环从小到大输出100-1;
c.while循环从大到小输出1-100;
d.while循环从小到大输出100-1。

for i in range(1, 101):
    print(i, end=" ")
print("")
for i in range(100, 0, -1):
    print(i, end=" ")
print("")
count = 1
while count <= 100:
    print(count, end=" ")
    count += 1
print("")
count = count -1
while count >= 1:
    print(count, end=" ")
    count -= 1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
练习15
购物车
功能要求:
-要求用户输入总资产,例如2000;
-显示商品列表,让用户根据序号选择商品,加入购物车;
-购买,如果商品总额大于总资产,提示账户余额不足,否则购买成功。
goods = [
{“name”: “电脑”, “price”: 1999},
{“name”: “鼠标”, “price”: 10},
{“name”: “游艇”, “price”: 20},
{“name”: “美女”, “price”: 998},
]

goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
]
account = int(input("请输入您的资产:"))
i = 0
dic = {}
for el in goods:
    i += 1
    dic.setdefault(str(i) + el["name"], el["price"])  # 使用字符串拼接,把序号加到键前面
print(dic)

lst = []  # 创建一个列表形式的购物车
money = 0  # 购物车中初始值为0
while 1:
    ret = input("请输入您要买的东西序号(q退出.n结算):").strip()
    if ret.isdigit():
        for el in dic:
            if ret == el[0]:  # 利用切片得到商品序号,判断用户输入的序号是否是商品序号
                lst.append(el[1:])  # 将商品添加到列表中
                money += dic[el]  # 计算购物车中商品的总价
                print("购物车中有:%s,消费总额为%s" % ([i for i in lst], money))

    elif ret.upper() == "Q":  # 执行退出操作
        print("退出成功!\n余额还有%s" % account)
        break
    elif ret.upper() == "N":  # 执行结算操作
        blance = account - money  # 余额 = 资产 - 消费总额
        if blance < 0:
            print("您的余额不足!!!")
        else:
            print("购买成功,花费了%d,余额还剩%s" % (money, blance))
        break
    else:
        print("输入有误,请再次输入!!!")

在这里插入图片描述
练习16
分页显示内容
a.通过for循环创建301条数据,数据类型不限,如:
alex-1 alex1@live.com pwd1
alex-2 alex2@live.com pwd2
alex-3 alex3@live.com pwd3

b.提示用户请输入要查看的页码,当用户输入指定页码,则显示指定数据;
注意:
-每页显示10条数据
-用户输入页码是非十进制数字,则提示输入内容格式错误

user_list = []
for i in range(1, 302):
    temp = {"name": "alex-" + str(i), "email": "alex" + str(i) + "live.com", "pwd": "pwd" + str(i)}
    user_list.append(temp)
v = input("请输入页码:")
v = int(v)
start = (v-1)*10
end = v*10
user_temp = user_list[start: end]
for i in user_temp:
    print(i)

在这里插入图片描述
练习17
有1、2、3、4、5、6、7、8八个数字,能组成多少个互不相同且无重复数字的两位数?

count = 0
for i in range(1, 9):
    for j in range(1, 9):
        if i != j:
            count += 1
print(count)

在这里插入图片描述
练习18
利用for循环和range输出9*9乘法表

for i in range(1, 10):
    for j in range(1, i+1):
        print(str(j)+"*"+str(i)+"="+str(i*j), end=" ")
    print("")

在这里插入图片描述
练习19
有一下列表
nums = [2, 7, 11, 15, 1, 8, 7]
请找到列表中任意两个元素相加能够等于9的元素集合,如:[(0, 1), (4, 5)]

nums = [2, 7, 11, 15, 1, 8, 7]
v = []
for i in nums:
    for j in nums:
        if i + j ==9:
            v.append((i, j,))
print(v)

在这里插入图片描述
练习20
用python开发程序自动计算方案:
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?

for i in range(1, 100//5+1):
    for j in range(1, 100//3+1):
        for k in range(1, 100):
            if i + j + k == 100 and 5 * i +3 * j + k/3 == 100:
                print("公鸡数:", i, "母鸡数:", j, "小鸡数:", k)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值