zoukankan      html  css  js  c++  java
  • 5.21

    5.21,Python第二节,伊始,我感觉我来到了蜀道的山脚下,抬头仰望,尽是巍峨,心底又不要脸的有一点儿小期待[*脸红*]

    这节课,我回忆起来都是些零零碎碎,讲了字符串、列表、字典、切片、文件等等等等等等等等等等等等等等等等,等到了地老天荒,俯瞰不消化的大肚皮,依稀泛起一股有容乃大的苍凉。。

    不过我觉得每节的作业都是精华,解题的过程就像探险一样有趣,嘻嘻嘻,所以我想分享出来,留待以后忘光的时候还有地方可以重温下当年的辉煌:

    1、写一个可以添加商品、查询商品的程序:
        #1、首先需要登录,登录的用户名和密码是存在一个文件里面的,格式是niuhanyang,123456
        #账号密码是输入正确就登录,
        #登录之后,提示有3个选择,1、添加商品2、查询商品3、退出程序,exit()
        #添加商品,需要输入、商品名称、商品id、商品价格,都不能为空,价格和id只能是数字,商品名称不能重复
        #添加商品成功后,要把商品写入到product.txt这个文件里面

      #查询商品,输入商品名称,不能输入空,如果商品存在,打印商品的信息
        #商品名:xx,商品价格:xxx,商品id:xxxx
        #如果商品不存在,提示不存在,如果直接输入exit,那就直接退出程序

    name_dict = {}
    with open('file.txt','r') as fn:
        for line in fn:
            name,passwd = line.strip(' ').split(',') # 把line以逗号分隔,去掉换行符,并且分别定义为name、passwd
            name_dict[name] = passwd # 转换为有唯一索引的字典,这句的意思是name是key,passwd是value

    id = 0
    p_dict = {}
    while True:
        name = input('请输入用户名:').strip()
        if name in name_dict:
            passwd = input('请输入密码:').strip()
            if passwd == name_dict[name]:
                print('欢迎%s来到小商品程序,请选择操作程序:' % name)
                print('1-添加商品'.center(50, '*'))
                print('2-查询商品'.center(50, '*'))
                print('3-退出程序'.center(50, '*'))
                while True:
                    action = input('请输入操作程序序号:').strip()
                    if action == '1':
                        pname = input('请输入商品名称:').strip()
                        id = id + 1
                        price = input('请输入商品价格:').strip()
                        if pname == '' or price == '':
                            print('商品名称或价格不能为空!')
                        else:
                            if pname in p_dict:
                                print('该商品已存在,不能重复添加!')
                            else:
                                if price.isdigit() != True:
                                    print('商品价格必须为数字!')
                                else:
                                    p_dict.setdefault(pname, {})['id'] = id
                                    p_dict.setdefault(pname, {})['price'] = price
                                    print(p_dict)
                                    with open('product.txt', 'w') as fp:
                                        product = str(p_dict)
                                        fp.write(product + ' ')
                                        print('添加商品%s成功!' % pname)
                    elif action == '2':
                        with open('product.txt', 'r') as fp:
                            p_list = fp.read()
                            print(p_list)
                        pname = input('请输入商品名称进行查询:').strip()
                        if pname == '':
                            print('商品名称不能为空!')
                        else:
                            if pname not in p_list:
                                print('该商品不存在!')
                            else:
                                p_dict = eval(p_list) # 这句的意思是把字符串转换为字典,注意:必须是符合字典格式的字符串才能转换,乱套的7788你是想干啥
                                print('商品名称:【%s】,商品价格:【%s】,商品ID:【%s】' % (pname, p_dict.get(pname).get('price'), p_dict.get(pname).get('id')))
                    elif action == '3' or action == 'exit':
                        print('您已退出程序,谢谢使用。')
                        exit()
                        break
                    else:
                        print('请输入正确的操作序号!')
            else:
                print('用户名或密码错误!')
        else:
            print('该用户不存在!')
        continue

    另外还有修改文件的迷之逻辑:

    # #下面这些是修改文件内容的
    # import os
    # f = open('a.txt','a+',encoding='utf-8')
    # # f代表的是这个文件的对象,也叫句柄
    # f.seek(0)#移动文件指针
    # fw = open('a.txt.new','w',encoding='utf-8')
    # for line in f:
    #     new_res = line.replace('1','2')
    #     fw.write(new_res)
    # f.close()
    # fw.close()
    # os.remove('a.txt')
    # os.rename('a.txt.new','a.txt')

    我想知道opena.txt.new的时候,真的不会报错么。。

    刚问了老师,老师说了,不会报错,因为a+文件不存在时,是不会报错的,同时,new出来的这个文件的命名也是可以很随意的~恩恩,涨姿势啦~

  • 相关阅读:
    rpm的制作 spec文件写法
    RPM 打包技术与典型 SPEC 文件分析
    生成器
    闭包
    内置函数
    函数递归
    高阶函数
    匿名函数
    文件操作
    bytes
  • 原文地址:https://www.cnblogs.com/zhlan/p/6909937.html
Copyright © 2011-2022 走看看