python day 6

1、昨日内容回顾

自己多练

2、作业

              # 作业
    # 1,有如下变量(tu是个元祖),请实现要求的功能。
tu= ("alex",[11,22,{"k1":'V1',"k2":["age","name"],"k3":(11,22,33)},44])
# a.讲述元祖的特性。
# 儿子不能改,孙子可能可以改
# b.请问tu变量中的第一个元素 “alex” 是否可被修改?。
# 不可以
# c.请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素"Seven" 。
# k2 对应的是一个列表,可以改,(元{字[列表]典}组)
# tu[1][2]['k2'].append('seven')
# print(tu)
# d.请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven" 。
# 元组,不能

    # 2,字典 dic,
dic= {'k1':'v1','k2':'v2','k3':[11,22,33]}
#a.请循环输出所有的key
for i in dic.keys():
    print(i)
#b.请循环输出所有的value.
for i in dic.values():
    print(i)
#c.请循环输出所有的key和value.
for k,v in dic.items():
    print(k,v)
for i in dic.items():
    print(i)
#d.请在字典中添加一个键值对,"k4": "v4",输出添加后的字典。
dic['k4'] = 'v4'
print(dic)
#e.请在修改字典中“k1” 对应的值为"alex",输出修改后的字典。
dic.setdefault('k4','v4')
print(dic)
#f.请在k3对应的值中追加一个元素44,输出修改后的字典。
dic['k3'] = [11,22,33,44]
print(dic)
#g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典。
dic1 = dic['k3']
dic1.insert(1,18)
dic['k3'] = dic1
print(dic)

    # 3、元素分类.
#有如下值 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,]
dic = {}
l_greater = []  #大于66的所有列表
l_less = []     #小于66的所有列表
for i in li:
    if i == 66:continue
    if i > 66:
        l_greater.append(i)
    else:
        l_less.append(i)
dic.setdefault('k1',l_greater)
dic.setdefault('k2',l_less)
print(dic)

    # 4、输出商品列表,用户输入序号,显示用户选中的商品
# 商品li = ["手机","电脑","鼠标垫","游艇"]要求:
# 1,页面显示序号+商品名称,如:
#       1 手机
#       2 电脑
#       ... ...
# 2,用户输入选择的商品序号,然后打印商品名称
# 3,如果用户输入的商品序号有误,则提示输入有误,并重新输入。
# 4,用户输入Q或者q,退出程序。
while 1:
    li = ["手机","电脑","鼠标垫","游艇"]
    for i in li:
        print('{}\t{}'.format(li.index(i)+1,i))
    num = input('请输入商品序号/输入 Q or q 退出:')
    if num.isdigit():
        num = int(num)
        if 0 < num and num <= len(li):
            print(li[num -1])
        else:print('请输入有效数字')
    elif num.upper() == 'Q':break
    else:print('请输入数字')

3、python2 、python3 的区别

python 2:                                                                   python 3:

print()  print'abc'                      print('abc')

range() xrange() 生成器               range()

raw_input()                   input()

4、=    ==     is

=:把一个值赋值给另一个值

==:比较值是否相等

is: 比较,比较的是内存地址  id(内容)

li1 = [1,2,3]  li2 = li1  此时li1和li2 用的是否是一个内存地址

print(li1 is li2)  #is 是比较内存地址 结果为Ture

print(id(li1),id(li2))    # id 是查li1 及li2 的内存地址,结果相同

5、数字、字符串

小数据池:在一定程度上节省空间

数字范围:-5 —— 256

字符串:1、不能有特殊特殊字符

    2、s*20还是同一个地址,s*21以后都是两个地址

l1 = 6

l2 = 6

print(id(l1),id(l2))

剩下的:list dict tuple set 都没有小数据池概念

 6、编码

ascii:

  A:00000010 一个字节 8位

unicode:

  A:00000000 00000001 00000010 00000100 32位 四个字节

  中:00000000 00000001 00000010 00000110  32位 四个字节

utf-8:

  A:0010 0000  8位一个字节

  中:00000001 00000010 00000110  24位 三个字节

gbk:

  A:00000110  8位 一个字节

  中:00000010 00000110  16位 两个字节

(1)各个编码之间的二进制是不能相互是别的,会产生乱码。

(2)文件的储存传输不能是unicoide(只能是utf—8 utf—16 gbk gb2312 asciid 等)

python3:

    str 在内存当中使用unicode储存的。

    bytes类型

    对于英文:

        str:表现形式:s = 'alex'

          编码方式:010101010  unicode

        bytes:表现形式:s = b'alex'

           编码方式:000101010  utf-8 gbk

      对于中文:

        str:表现形式:s = '中国'

          编码方式:010101010  unicode

        bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32'  三个字节表示一个中文

           编码方式:000101010  utf-8 gbk

# s = 'alex'
# s1 = b'alex'
# print(s,type(s))
# print(s1,type(s1))
# encode 编码,外部将 str-->bytes
# 内部将unicod——>utf-8、gbk ()内可以设置编码方式
s1 = 'alex'
s11 = s1.encode('utf-8')
s12 = s1.encode('gbk')
print(s11)  # b'alex'
print(s12)

s2 = '中国'
s22 = s2.encode('utf-8')
s23 = s2.encode('gbk')
print(s22)
print(s23)

  

          # 购物车作业讲解
# 买家 卖家 商品 金钱
li = [
    {'name':'苹果','price':10},
    {'name':'香蕉','price':20},
    {'name':'西瓜','price':30},
]
# 把货物放在货架上
shopping_car = {}
print('欢迎光临大铁锤水果店')
money = input('让我看看你的钱')
if money.isdigit() and int(money)>0:
    while 1:
        for i,k in enumerate(li):
            print('序号{},商品{},价格{}'.format(i,k['name'],k['price']))
        choose = input('请输入你要购买的商品序号')
        if choose.isdigit() and int(choose) < len(li):
            num = input('你要购买得商品数量')
            if num.isdigit():
                if int(money) > li[int(choose)]['price']*int(num):
                    money = int(money)-li[int(choose)]['price']*int(num)
                    if li[int(choose)]['name'] in shopping_car:
                        shopping_car[li[int(choose)]['name']] = shopping_car[li[int(choose)]['name']] + int(num)
                    else:shopping_car[li[int(choose)]['name']] = int(num)
                    print('购物车中得商品有{},你的余额为{}'.format(shopping_car,money))
                else:print('穷鬼,回去跟你老婆要钱去')
        else:print('都说了是序号了')

  

猜你喜欢

转载自www.cnblogs.com/mangoorangutan/p/11248479.html