从7点到9点写的小程序(用了模块导入,python终端颜色显示,用了点局部和全局可变和不可变作用域,模块全是自定义)

未完待续的小程序

要是能做的好看为啥不做的好看

在同目录下生成程序

1.程序文件

run.py

from login import login
from register import register
from balance_enquiry import balance_enquiry
from top_up import top_up
msg_dict ={
    '1':login,
    '0':register,
    '2':top_up,
    '3':balance_enquiry,
    'q':'quit'
}
Login_name = [None]
while True:
    print("\033[0;31;44m\t\t杨大爷超市欢迎您\t\t\t\033[5m")
    print(38*'-')
    print("\033[0;30;42m\t\t输入0进入注册界面\t\t\t\033[5m")
    print("\033[0;30;42m\t\t输入1进入登入界面\t\t\t\033[5m")
    print("\033[0;30;42m\t\t输入2进入充值界面\t\t\t\033[5m")
    print("\033[0;30;42m\t\t输入3进入余额查询界面\t\t\033[5m")
    print("\033[0;30;42m\t\t输入q退出程序 \t\t\t\t\033[5m")
    print(38 * '-')
    user_shopping_chiose = input('请输入你要选择的功能')
    if user_shopping_chiose not in msg_dict:
        print('请好好输入')
        continue
    elif user_shopping_chiose=='q':
        print('再见')
        break
    msg_dict[user_shopping_chiose]()

2.自制文件读取模块

open_mode.py

def read_all(filename):
    with open (filename,'a+',encoding='utf8') as fr :
        fr.seek(0)
        res = fr.read()
    return res

#文件信息格式为info_list=[name:pwd:aggregate score:The remaining points:freeze0为解冻,1为冻结:账户余额 ]
#info_dict[name:[pwd:aggregate score:The remaining points:freeze0为解冻,1为冻结]]
def to_info_dict(filename):
    info_dict = dict()
    with open (filename,'a+',encoding='utf8') as fr :
        fr.seek(0)
        for info in fr:
            info_list = info.strip().split(':')
            name = info_list[0]
            info_dict[name] = info_list[1:]
    return info_dict
#账号:密码:总积分:剩余积分:是否为冻结0为未冻结,1位冻结:账户余额
def add_info(user_name,user_pwd):
    with open('用户注册信息.txt', 'a', encoding='utf8') as fw:
        fw.write(f'{user_name}:{user_pwd}:0:0:0:0\n')

def add_purchase_history(user,goods,nums,price,Discounted_price):
    with open('购买记录.txt', 'a', encoding='utf8') as fw:
        fw.write(f'{user}:{goods}:{nums}:{price}:{Discounted_price}\n')

3..功能模块

1.登入

login.py

import open_mode
#Login_successful[0]来判断是否登入成功
Login_name = [None]
def login():
    print("\033[0;40;46m\t\t欢迎使用登入功能\t\t\t\033[0m")
    info = open_mode.read_all()
    if info == '':
        print('无人注册会员请先注册')
        return
    user_dict = open_mode.to_info_dict('用户注册信息.txt')
    if not Login_name[0]:
        while True:
            print(38*'-')
            print('输入q可以退出登入程序')
            user_name = input('请输入你的名字\n')
            if user_name =='q':
                return False
            if user_name not in user_dict:
                print('账号不存在请重新登入')
                continue
            print(38*'-')
            user_pwd = input('请输入你账号密码\n')
            if user_pwd != user_dict[user_name][0]:
                print('密码错误请重新登入')
                continue
            elif user_dict[user_name][3]=='1':
                print(f'该账号{user_name}已经被冻结不能使用')
                continue
            print('登入成功')
            Login_name[0] = user_name
            return  True
    while True:
        print(38*'-')
        print("\033[0;40;46m\t\t欢迎使用登入功能\t\t\t\033[0m")
        print(f'账号{Login_name[0]}已经登入')
        chiose = input('输入1当前账号退出并退出登入程序\n'
                       '输入2当前账号退出并重新登入程序\n'
                       '输入Q退出当前程序')
        print(38*'-')
        if chiose == '1':
            Login_name[0] = None
            return False
        elif chiose =='2':
            Login_name[0] = None
            login()
            return
        elif chiose =='Q':
            return True
        else:
            print('请正确输入')
        

2.注册

register.py

import open_mode
def register():
    while True:
        print(38*'-')
        print("\033[0;40;46m\t\t注册功能\t\t\t\033[0m")
        user_name = input('请输入注册账号(退出程序输入q)\n'
                          '(账号大于6位小于9位由纯字母组成)\n'
                         )
        if user_name=='q':
            return False
        elif len(user_name.replace(' ','')) != len(user_name):
            print('输入的账号有空格请重洗输入')
            continue
        elif len(user_name) < 6:
            print('输入账号太短不能小于6位')
            continue
        elif len(user_name) > 9:
            print('输入账号太长不能大于9位')
            continue
        elif not user_name.isalpha():
            print('账号有字母注册')
            continue
        print(38*'-')
        user_pwd = input('请输入密码\n'
                    '(密码由纯数字组成)\n')
        if len(user_name.replace(' ','')) != len(user_name):
            print('输入的密码有空格请重洗输入')
            continue
        elif not user_pwd.isdigit():
            print('密码要纯数字')
        else:
            info = open_mode.read_all('用户注册信息.txt')
            if user_name in info:
                print('账号存在请重新注册')
                continue
            open_mode.add_info(user_name,user_pwd)
            print('注册成功')
            print(38*'-')
            return True

3.购物

shopping.py

import  open_mode
import  login
#Login_successful[0]来判断是否登入成功
Login_name = [None]

goods_dict = {
    '0':['草泥马',100],
    '1':['《nick写真集》',1],
    '2':['奥特曼玩偶',50],
    '3':['钢铁侠真人套装',10000],
    '4':['《产品经理强哥自传》',188],
    '5':['《马叉虫是如何炼成的》',888],
    '6':['《YwY自传》',8888888888888]
}

user_car = dict()

def shopping():
    a = '0'
    money = 0
    if not Login_name[0]:
        print('请先登入')
        return
    while a == '0':
        print(38*'-')
        print("\033[0;30;46m\t\t输入0是草泥马100元\t\t\t\t\033[5m")
        print("\033[0;30;46m\t\t输入1是《nick写真集》1元\t\t\t\033[5m")
        print("\033[0;30;46m\t\t输入2是奥特曼玩偶50元 \t\t\t\033[5m")
        print("\033[0;30;46m\t\t输入3是钢铁侠真人套装10000元 \t\033[5m")
        print("\033[0;30;46m\t\t输入4是《产品经理强哥自传》18888元\033[5m")
        print("\033[0;30;46m\t\t输入5是《马叉虫是如何炼成的》888元\033[5m")
        print("\033[0;30;46m\t\t输入6是《YwY自传》8888888888888元\033[5m")
        print("\033[0;30;46m\t\t输入q退出程序\t\t\t\t\t\033[5m")
        print(38 * '-')
        goods_chiose = input('请输入你要购买的商品')
        if goods_chiose not in goods_dict:
            print('请好好输入')
            continue
        elif goods_chiose=='q':
            return
        else:
            a = '2'
        while True:
            goods_nums = input('请输入商品的数量')
            if not goods_nums.isdigit():
                print('请输入数字')
            break
        goods = goods_dict[goods_chiose][0]
        price = goods_dict[goods_chiose][1]*int(goods_nums)

        #生成购物车
        global user_car
        if goods not in user_car:
            user_car[goods] = [goods_nums,price]
        else:
            user_car[goods][0] += goods_nums
            user_car[goods][1] += price
        judge = 1
        while judge == 1:
            print(50 * '-')
            jump = input('输入0结算\n'
                         '输入1继续购买\n'
                         '输入2清空购物车继续购买\n'
                         '输入3清空购物车退出\n'
                         '请输入您的选择\n'
                         '').strip()
            if jump not in ['0','1','2','3']:
                print('请正确输入0,1,2,3中任意数字')
                continue
            if jump == '1':
                judge = 4  # 跳出功能选择
                a = '0'  # 继续购买
            elif jump == '2':
                user_car = dict()  # 清空购物车
                judge = 4  # 跳出功能选择
                a = '0'  # 继续购买
            elif jump == '3':
                user_car = dict()
                judge = 4  # 跳出功能选择
                print("-" * 50)
                print('欢迎下次光临')
            elif jump == '0':
                judge = 4  # 跳出功能选择
                print("-" * 50)
                #打印内容
                for user_car_info in user_car.items():
                    print(f'{user_car_info[0]}{user_car_info[1][0]}个 合计{user_car_info[1][1]}元')
                    money += int(user_car_info[1][1])
                print(f'\t\t\t\t\t一共{money}元')
                print("-" * 50)
                print('欢迎下次光临')

4.余额查询(学了js模块再该)

balance_enquiry.py

def balance_enquiry():
    pass

5.4.充值(学了js模块再该)

top_up.py

def top_up():
    pass

原文地址:https://www.cnblogs.com/pythonywy/p/10981953.html

时间: 2024-10-09 21:13:47

从7点到9点写的小程序(用了模块导入,python终端颜色显示,用了点局部和全局可变和不可变作用域,模块全是自定义)的相关文章

没有基础也能写个小程序

文章记录了小程序的设计思路,介绍了使用的技术,描述了提交审核的故事,还提供了最终的完整源码 背景说明 微信小程序自从发布以来就占据着超高的话题热度,一直以来都想开发一款自己的小程序,但苦于不懂前端迟迟没有开始.偶然发现了ColorUI这个开源的小程序组件库,界面好看且提供Demo,心中狂喜马上动手 做个什么小程序呢?想了一圈这半年多一直坚持在写技术文章,为此开通了微信公众号,因为公众号查看文章列表不友好,且不方便在微信以外的渠道传播,我又利用Github Pages搭建了运维咖啡吧网站主页,就想

Python:每天写点小程序

每天写点python小程序,下面是对一个txt文件的 里面的字数的统计,看的其他人的 1 file_name="E:\movie.txt" 2 #Python学习群125240963 3 4 5 line_counts=0 6 7 word_counts=0 8 9 character_counts=0 10 11 12 13 with open(file_name,"r") as f: 14 15 for line in f: 16 17 words=line.s

用mpvue写微信小程序时,webview跳转外部链接,再跳转回来需要点两次返回箭头才能跳转

问题描述: 给公司做微信小程序时遇到了这个问题,用mpvue框架搭建的小程序,从首页点击进去,先跳转到一个中间页面,在中间页面放上webview链接到外部的H5页面,这时点击小程序左上角自带的返回按钮,第一次会跳转到空白页,再点一次才能跳转到首页. 首页: 详情页: 这时需要点击左上角的返回箭头两次,才能跳转到首页 解决办法: 小程序跳到外部页面方法: 1.从首页(index)跳转到中间页(template): goPage(id){ wx.navigateTo({url:'../templat

实现自己写的小程序富文本编辑以及展示,不跟PC端的兼容,但是可以在pc端显示以及修改,一旦修改,小程序不再做解析

富文本结构: 1 <div class="detail_box"> 2 <ul> 3 <li v-for="(item4,index4) in detailAry" :key="index4"> 4 <!-- 文字 --> 5 <div class="detail_list"> 6 <div class="list_t"> 7 <

用android去写一个小程序

前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云(http://www.cnblogs.com/clyln/),用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对应,缺点:采用java实现过于复杂,工程量过大,需要消耗大量资源,类型转换容易出错. 后期思路设计: 采用二维数组:第一行用于存储用户输入原始数据,第二行用于存储中间数据(第一行的与G值做差的绝对值),第三行用于保存用户得分. 优点:实现简单,易于运算 分

利用 Makefile 写的小程序

1.建立一个工程 2.写一个进度条的程序(原理就是在同一位置重复打印某一个字符(变化),达到动态显示的效果) 所以说我们这里只用回车'\r',覆盖这一行以前的输出,重新向缓冲区写数据刷新缓冲区,就能达到动态显示的目的: 效果图如下: 3.在工程下新建一个叫做 Makefile 的文件(M 也可以小写),并用 vim 编辑 4.运行 make 得到 ProgressBar 可执行文件,运行 make clean 清除可执行文件 这里奉上一篇博客,博客中详细介绍了:Makefile ,make 的使

代写Java小程序: Finding customer clusters at the Telco

There can be no extensions to this date. All assignments for this subject for this semester MUST be submitted by the 29th March. No Exceptions. Previously, management have been quite directed about what they were looking for and what they wanted to p

写个小程序查看500以内的质数

''' 写一个500以内的Eratosthenes筛法找出全部素数 ''' class node(object): def __init__(self,num): self.visited = False self.isPrime = False self.num = num matrix = [node(i+1) for i in range(500)] count = 0 def isPrime(num): for i in range(2,int(num**0.5)+1): if(num

520写的小程序

只能点击我喜欢你,不能点击不喜欢你!!! package com.y; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Random; import javax.swin