老男孩第十四期 python 自动化运维第二周

  1. 列表、元组操作
  2. 字符串操作
  3. 字典操作
  4. 集合操作
  5. 文件操作
  6. 字符编码与转码 

1-6 :alex https://www.cnblogs.com/alex3714/articles/5717620.html

 三元运算符:

 result = 值1 if  条件 else 值2

如果条件为真:result = 值1

如果条件为假:result = 值2

>>> a,b,c = 1,3,5
>>> d = a if a > b else c
>>> d
5
>>> d = a if a< b else c
>>> d
1
>>> 

 

字符编码和解码:

  encode 和 decode

  encode 和decode 的utf-8 编码和解码 主要应用于中文,英文和数字、符号都未发现能编码,只有中文有编码

>>> 'abc123我的世界'.encode('utf-8')
b'abc123\xe6\x88\x91\xe7\x9a\x84\xe4\xb8\x96\xe7\x95\x8c'
>>> b'abc123\xe6\x88\x91\xe7\x9a\x84\xe4\xb8\x96\xe7\x95\x8c'.decode('utf-8')
'abc123我的世界'
>>> 

 

编码详解

https://www.cnblogs.com/yuanchenqi/articles/5956943.html

解决爬虫网页中文乱码问题

https://www.cnblogs.com/xiaolee-tech/p/12344592.html

 

购物车程序

 

'''
作者:潘富家
功能:
    启动程序后,让用户输入工资,然后打印商品列表
    允许用户根据商品编号购买商品
    用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    可随时退出,退出时,打印已购买商品和余额
版本:1.0
创建时间:忘了
'''


product_list =  []
product_file = 'product.csv'
with open('product.csv','r') as f:
    for i in f.read().split('\n')[1:]:
        product_list.append(i.split(','))

shopping_list = []#记录步骤
salary = input('Input yor salary:')
user = input('')
if salary.isdigit():
    salary  =  int(salary)
    while True:
        for index,item in enumerate(product_list):
            print(index,item)
        user_choice = input('选择要买嘛?>>>:')
        if user_choice.isdigit():#判断编号是否为数字
            user_choice = int(user_choice)
            if user_choice < len(product_list) and user_choice >= 0 :#编号范围从0到数组长度-1
                p_item = product_list[user_choice] #获取正确商品编号的元组
                if p_item[1] <= salary:#买得起

                    shopping_list.append(p_item)#记录添加
                    salary -= p_item[1]
                    print("Added %s into shopping cart,your current balance is \033[31:1m%s\033[0m" %(p_item[0],p_item[1]))
                else:#
                    print('\033[41:1m你的余额只剩[%s]啦,还买个毛线\033[0m'% salary)
            else: #不存在商品编号
                print("product code [%s] is not exist!"% user_choice)

        elif user_choice == 'q':#退出 输出购买商品以及剩余余额
            print('shopping list'.center(40,'-'))
            for p in shopping_list:
                print(p)
            print("Your current balance:",salary)
            exit()
        else:
            print('invalid option')
View Code

 

购物车优化

流程图

 用户接口

'''
作者:潘富家
功能:
    用户接口
    商品信息存在文件里
    已购商品, 余额记录
版本:1.0
创建时间:忘了
'''


import os
product_list =  [] #商品信息
user_list = []  #用户信息
product_file_text = 'product.csv'#商品表名
user_file_text = 'user_information.csv' #用户表名
if not os.path.isfile(product_file_text):
    with open(product_file_text,'w') as product_file:
        text= '''product,money
IPhone,5800
Mac Pro,9800
Bike,800
Watch,10600
Coffee,31
Alex Python,5800'''
        product_file.write(text)
if not os.path.isfile(user_file_text):
    with open(user_file_text,'w') as user_file:
        user_file.write('user,money,shopping_information')
with open(product_file_text,'r') as product_file:#取出商品信息表
    p_f = product_file.read().split('\n')
    for i in p_f:
        if len(i) >1:
            text = i.split(',')
            product_list.append(text)
    for i in range(1,len(product_list)):#对商品价格进行类型转换(文档默认为string)
        product_list[i][1] = int(product_list[i][1])
with open(user_file_text,'r') as user_file:#用户信息录入
    u_f = user_file.read().split('\n')
    for i in u_f:
        text = i.split(',')
        user_list.append(text)

print(product_list)
print(user_list)
shopping_list = []#记录步骤
bool = False
user = input('请输入用户')
for i in user_list:
    if user in i[0]:
        salary = i[1]
        bool = True
if not bool:
    salary = input('Input yor salary:')
if salary.isdigit():
    salary = int(salary)
    while True:
        for index,item in enumerate(product_list[1:]):
            print(index,item)
        user_choice = input('选择要买嘛?>>>:')
        if user_choice.isdigit():#判断编号是否为数字
            user_choice = int(user_choice)+1
            if user_choice < len(product_list) and user_choice >= 0 :#编号范围从0到数组长度-1
                p_item = product_list[user_choice] #获取正确商品编号的元组

                if p_item[1] <= salary:#买得起

                    shopping_list.append(p_item)#记录添加
                    salary -= p_item[1]
                    print("Added %s into shopping cart,your current balance is \033[31:1m%s\033[0m" %(p_item[0],p_item[1]))
                else:#
                    print('\033[41:1m你的余额只剩[%s]啦,还买个毛线\033[0m'% salary)
            else: #不存在商品编号
                print("product code [%s] is not exist!"% user_choice)

        elif user_choice == 'q':#退出 输出购买商品以及剩余余额
            print('shopping list'.center(40,'-'))
            with open(user_file_text,'w') as user_file:#用户文件写入
                text_s  = ''#购买信息存储
                for p in shopping_list:
                    #print(p)
                    text_s += "{}:{} ".format(p[0],p[1])
                if not bool:
                    user_list.append([user, salary,text_s])
                for i in user_list:
                    if len(i) ==3:
                        if i[0] == user:#当用户为用户表用户
                            #print(i[2])
                            #print(text_s)
                            text_s = i[2] + text_s#本次购买信息 加上之前购买信息
                            i[1] = str(salary)#更新工资
                            i[2] = text_s

                        user_file.write('{},{},{}\n'.format(i[0],i[1],i[2]))#写入用户信息表
                    '''
                user_dict = {abc[i]:user_list[0][i]  for i in range(len(user_list[0]))}
                print(user_dict)

                user_file.write('{a},{b},{c}'.format_map(user_dict))
                user_file.write('{},{},{}'.format(user,str(salary),text_s))'''
                print("user:"+user)
                print("Your current balance:",salary)
            exit()
        else:
            print('invalid option')
View Code

管理员接口

'''
作者:潘富家
功能:
    管理员接口,商品的增删改
版本:1.0
创建时间:忘了
'''

import os


product_list = []
product_file_text='product.csv'
if not os.path.isfile(product_file_text):#当没有文件时进行初始化
    with open(product_file_text, 'w') as product_file:
        text = '''product,money
IPhone,5800
Mac Pro,9800
Bike,800
Watch,10600
Coffee,31
Alex Python,5800'''

with open(product_file_text,'r') as product_file:#取出商品信息表
    p_f = product_file.read().split('\n')
    for i in p_f:
        if len(i) >1:
            text = i.split(',')
            product_list.append(text)
    for i in range(1,len(product_list)):#对商品价格进行类型转换(文档默认为string)
        product_list[i][1] = int(product_list[i][1])

while True:
    for i in range(len(product_list)):#输出所有商品信息
        if str(product_list[i][1]).isdigit():
            print(str(i),product_list[i][0],product_list[i][1])

    product_text = input('请问添加商品(a),还是修改商品(u):')
    print(product_text=='u')
    if product_text == 'u':#更改商品
        product_number = input('请输入编号')
        if product_number.isdigit() and int(product_number)<len(product_list):#判断编号是否为数字
            product_number = int(product_number)
            product_number_text = input('修改格式 商品名:价格')
            p_n_t_s = product_number_text.split(':')[1]
            if p_n_t_s.isdigit():
                product_list[product_number] = p_n_t_s
            else:
                print('输入价格错误')
    elif product_text == 'a':#添加商品
        product_number_text = input('添加格式 商品名:价格')
        p_n_t_s = product_number_text.split(':')[1]
        if p_n_t_s.isdigit():
            product_list.append(p_n_t_s)
        else:
            print('输入价格错误')
    if product_text == 'q':
        break

with open(product_file_text,'w') as product_file:
    for i in product_list:
        if len(i) == 2:
            product_file.write('{},{}\n'.format(i[0],i[1]))
View Code

 

posted on 2020-12-24 10:26  成前无人知成后有人明  阅读(107)  评论(0)    收藏  举报

导航