首页 > 其他 > 详细

第五天知识总结

时间:2020-07-16 22:53:47      阅读:45      评论:0      收藏:0      [点我收藏+]
例题1:有如下值li=[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中
,将小于66的值保存至字典的第二个key中。即{‘k1‘:大于66的所有值列表,‘k2‘:小于66的所有值列表}
# 方法一
li = [11,22,33,44,55,66,77,88,99,90]
dic = {k1:[],
       k2:[]
       }
for i in li:
    if i == 66:continue
    if i < 66:
        dic[k1].append(i)
    else:
        dic[k2].append(i)
print(dic)
# 方法二
li = [11,22,33,44,55,66,77,88,99,90]
dic = {}
li_greater = []
li_less = []
for i in li:
    if i == 66:
        continue
    if i < 66:
        li_less.append(i)
    else:
        li_greater.append(i)
dic.setdefault(k1,li_greater)
dic.setdefault(k2,li_less)
print(dic)
例题2:输出商品列表,用户输入序号,显示用户选中的商品。
商品 li=[‘手机‘,‘电脑‘,‘鼠标垫‘,‘键盘‘]
要求:1:页面显示 序号+商品名称,如:
1.手机
2.电脑
。。。
2:用户输入num_choose = input(‘请选择商品序号‘),然后打印商品名称
3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
4:用户输入Q或q,推出程序
li=[手机,电脑,鼠标垫,键盘]
for i in li:
        print({}\t{}.format(li.index(i)+1,i))
while 1:
    sum_choose = input(输入的商品序号/输入R或者r退出)
    if sum_choose.isdigit():
        sum_choose = int(sum_choose)
        if sum_choose > 0 and sum_choose <= len(li):
            print(li[sum_choose-1])
        else:
            print(输入有误,并重新输入)
    elif sum_choose.upper() == Q:
        break
    else:
        print(请输入数字)
小知识点(了解就行):
# 1.一个=是赋值,两个等号是比较值是否相等;is是比较的意思,比较的是内存地址;id是内存地址的意思
li1 = [1,2,3]
li2 = li1
print(li1 is li2)
print(id(li1),id(li2))
# 2.当数字的范围在-5--256之间时,内存地址时一样的
i1 = 3
i2 = 3
print(id(i1),id(i2))
i3 = 295
i4 = 295
print(id(i3),id(i4))          # 在终端去试
# 3.字符串:1.不能含有特使字符/
#            2.str*20还是同一个地址,s*21以后都是两个地址
i5 = find
i6 = find
print(id(i5),id(i6))
i7 = @fing
i8 = @fing
print(id(i7),id(i8))            # 在终端去试
i9 = a*20
i10 = a*20
print(i9 is i10)
i9 = a*21
i10 = a*21
print(i9 is i10)                 # 在终端试
编码问题:

1.各个编码之间的二进制,是不能互相识别的,会产生乱码
2.文件的储存和传输不能是unicode(只能是utf-8,utf-16,gbk,gb2312,ascii等)


python3:
        str在内存中是用unicode编码
          bytes类型
          对于英文:
                str : 表现形式:s=alex
                      编码方式: 00100101   unicode
                bytes : 表现形式:s=balex
                        编码方式:00100101  utf-8,jbk...
          对于中文:
                str : 表现形式:s=中国
                      编码方式: 00100101   unicode
                bytes : 表现形式:s=b\xe4\xb8\xad\xe5\x9b\xbd
                        编码方式:00100101  utf-8,jbk...

技术分享图片


# encode:编码,如何将str --> bytes,可以设置编码方式
s1 = alex
s1_1 = s1.encode(utf-8)
print(s1_1)
s2 = 中国
s2_2 = s2.encode(utf-8)
print(s2_2)
例题4.购物车作业(持续完善)

li = [
    {name:苹果,price:10},
    {name:梨子,price:12},
    {name:香蕉,price:15},
    {name:橘子,price:18},
    {name:葡萄,price:20}
]
shopping_car = {}
print(欢迎光临本小店!)
for i,k in enumerate(li):
        print(序号:{}\t商品:{}\t价格:{}{}.format(i,k[name],k[price],))
money = input(请输入你预计的总价格:)
if money.isdigit():
    while 1:
        choose = input(请输入商品序号)
        if choose.isdigit() and int(choose) < len(li) and int(choose) >= 0:
            number = input(请输入商品个数:)
            if number.isdigit():
                if int(money) > li[int(choose)][price] * int(number):
                    money = int(money) - li[int(choose)][price] * int(number)
                    if li[int(choose)][name] in shopping_car:
                        shopping_car[li[int(choose)][name]] += int(number)
                    else:
                        shopping_car[li[int(choose)][name]] = int(number)
                    print(你的购物车中商品有{},余额为{}.format(shopping_car,money))
                else:
                    print(价格超出预算,请重新选择)
                    break
            else:
                print(请输入正确的数字)
        else:
            print(请输入正确的序号)
else:
    print(请输入正确的数额)

 

 
 

第五天知识总结

原文:https://www.cnblogs.com/world-sum/p/13324715.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!