Python学习day5作业-ATM和购物商城

Python学习day5作业

Python学习day5作业

ATM和购物商城

作业需求

ATM:

  1. 指定最大透支额度
  2. 可取款
  3. 定期还款(每月指定日期还款,如15号)
  4. 可存款
  5. 定期出账单
  6. 支持多用户登陆,用户间转帐
  7. 支持多用户
  8. 管理员可添加账户、指定用户额度、冻结用户等

购物车:

  1. 商品信息- 数量、单价、名称
  2. 用户信息- 帐号、密码、余额
  3. 用户可充值
  4. 购物历史信息
  5. 允许用户多次购买,每次可购买多件
  6. 余额不足时进行提醒
  7. 用户退出时 ,输出当次购物信息
  8. 用户下次登陆时可查看购物历史
  9. 商品列表分级显示

1. 程序说明

购物商城实现功能如下:

博客

多用户登录

商品按二级菜单显示

充值功能

多次购买,每次购买多件

余额不足提示充值

可查看购物历史

ATM实现功能如下:

指定最大透支额度

可取款

定期还款(每月指定日期还款,如15号)

可存款

定期出账单

支持多用户登陆,用户间转帐

支持多用户

管理员可添加账户、指定用户额度、冻结用户等

ygqygq2的博客地址
作业地址:https://git.oschina.net/ygqygq2/python_homework/tree/master/day5作业

2. 基本流程图

3. 程序测试帐号

用户/密码:
ATM普通用户:1000/abc、1001/1001
ATM管理用户:admin/abc
购物商城:test/test

4. 程序结构:

.├── Atm  # ATM主程目录  │   ├── __init__.py│   ├── api  # ATM程序API目录│   │   ├── __init__.py│   │   ├── __pycache__│   │   │   ├── __init__.cpython-35.pyc│   │   │   └── pay1.cpython-35.pyc│   │   └── pay.py # ATM支付api│   ├── bin  # ATM执行文件目录│   │   ├── __init__.py│   │   ├── atm.py  # ATM执行程序,普通用户登录入口│   │   └── manager.py  # ATM管理员登录入口│   ├── conf  # ATM配置目录│   │   ├── __init__.py│   │   ├── __pycache__│   │   │   ├── __init__.cpython-35.pyc│   │   │   └── settings.cpython-35.pyc│   │   └── settings.py  # ATM配置文件│   ├── core  # ATM主要逻辑程序目录│   │   ├── __init__.py│   │   ├── __pycache__│   │   │   ├── __init__.cpython-35.pyc│   │   │   ├── accounts.cpython-35.pyc│   │   │   ├── auth.cpython-35.pyc│   │   │   ├── bill_date.cpython-35.pyc│   │   │   ├── db_handler.cpython-35.pyc│   │   │   ├── logger.cpython-35.pyc│   │   │   ├── main.cpython-35.pyc│   │   │   └── transaction.cpython-35.pyc│   │   ├── accounts.py  # 用于从文件里加载和存储账户数据│   │   ├── auth.py  # 用于帐户认证和帐户操作│   │   ├── bill_date.py  # 根据年-月,生成帐单起止时间模块│   │   ├── db_handler.py  # 数据库连接引擎│   │   ├── logger.py  # 日志记录模块│   │   ├── main.py  # 主逻辑程序│   │   └── transaction.py  # 记账\还钱\取钱等所有的与账户金额相关的操作模块│   ├── db  # 用户数据存储目录│   │   ├── __init__.py│   │   ├── account_sample.py  # 生成一个初始的账户数据 ,把这个数据存成一个以这个账户id为文件名的文件,放在accounts目录就行了,程序自己去会这里找│   │   └── accounts  # 存各个用户的账户数据,一个用户一个文件│   │       ├── 1000.json  # 一个普通用户账户文件│   │       └── admin.json  # 一个管理员用户示例文件│   ├── docs  # 程序说明文档目录│   │   └── __init__.py│   └── log  # 日志根目录│       ├── __init__.py│       ├── access.log  # 用户访问和操作的相关日志│       ├── accounts  # 存各个用户的帐单数据,一个用户一个文件│       │   └── 1000.bills  # 一个普通用户的帐单文件│       └── transactions.log  # 所有的交易还款等日志├── README.md   # readme文件└── Shopping_mall  # 购物商城程序目录    ├── bin  # 购物商城执行文件目录    │   ├── __init__.py    │   └── shopping_mall.py  # 购物商城入口程序    ├── conf  # 购物商城配置目录    │   ├── __init__.py    │   ├── __pycache__    │   │   ├── __init__.cpython-35.pyc    │   │   ├── goods.cpython-35.pyc    │   │   └── settings.cpython-35.pyc    │   ├── goods.py  # 购物商城商品价格列表    │   └── settings.py  # 购物商城配置文件    ├── core  # 购物商城主要逻辑程序目录    │   ├── __init__.py    │   ├── __pycache__    │   │   ├── __init__.cpython-35.pyc    │   │   ├── accounts.cpython-35.pyc    │   │   ├── auth.cpython-35.pyc    │   │   ├── db_handler.cpython-35.pyc    │   │   ├── logger.cpython-35.pyc    │   │   ├── main.cpython-35.pyc    │   │   └── shopping.cpython-35.pyc    │   ├── accounts.py  # 用于从文件里加载和存储账户数据    │   ├── auth.py  # 用于帐户认证和帐户操作    │   ├── db_handler.py  # 数据库连接引擎    │   ├── logger.py  # 日志记录模块    │   └── main.py  # 主逻辑程序    ├── db  # 用户数据存储目录    │   └── accounts  # 存各个用户的账户数据,一个用户一个文件    │       ├── __init__.py    │       └── test.json  # 一个普通用户账户文件    └── log        ├── access.log  # 用户访问和操作的相关日志        └── test_shopping.log  # 用户购物历史日志

5. 程序测试

  1. 管理员登录失败
    python Atm/bin/manager.py
################ATM admin manager#################account:apassword:aAccount [a] does not exist!account:apassword:aAccount [a] does not exist!account:apassword:aAccount [a] does not exist!2017-01-27 01:47:07,377 - access - ERROR - account [a] too many login attempts

Process finished with exit code 0
  1. 管理员登录(不允许普通用户登录)
    python Atm/bin/manager.py
################ATM admin manager#################account:1000password:abcPermission denied

Process finished with exit code 0
################ATM admin manager#################account:adminpassword:abc

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出

>>:1001Option does not exist!

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出

>>:1account id:1001password:1001Account [1001] is exist,try another account.account id:1002password:1002account [1002] added sucessed

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出  >>:2Please input your query account id:1002pay_day             :22                  credit              :15000               status              :0                   balance             :15000               id                  :1002                enroll_date         :2017-01-27          expire_date         :2022-01-26          

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出

>>:2Please input your query account id:1001pay_day             :22                  credit              :15000               status              :0                   id                  :1001                balance             :15000               enroll_date         :2017-01-27          expire_date         :2022-01-26          

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出

>>:>>:3account id:1001You can choose the items like this:{    "password": "abc",    "credit": 15000,    "status": 0,    "expire_date": "2021-01-01",    "pay_day": 22}Input modify items(json):{"credit":20000,"pay_day": 23}Account infomation updated!

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出

>>:2Please input your query account id:1001pay_day             :23                  credit              :20000               status              :0                   balance             :15000               id                  :1001                enroll_date         :2017-01-27          expire_date         :2022-01-26          

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出

>>:>>:2Please input your query account id:0Get account [0] info pemission denied!

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出

>>>>:2Please input your query account id:0Get account [0] info pemission denied!

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出

>>>>:2Please input your query account id:0Get account [0] info pemission denied!

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出

>>:4------------------Account bill:------------------------------------------End------------------------------------------Account bill:-------------------expire_date         :2021-01-01          credit              :15000               enroll_date         :2016-01-02          status              :0                   balance             :4265.0              pay_day             :22                  id                  :1000                Today is not the bill generation day!Account [1000] need to repay [10735.0]-----------------------End------------------------------------------Account bill:-------------------expire_date         :2022-01-26          id                  :1001                pay_day             :23                  status              :0                   balance             :15000               enroll_date         :2017-01-27          credit              :20000               Today is not the bill generation day!Account [1001] need to repay [5000]-----------------------End------------------------------------------Account bill:-------------------expire_date         :2022-01-26          credit              :15000               pay_day             :22                  status              :0                   balance             :15000               enroll_date         :2017-01-27          id                  :1002                Today is not the bill generation day!Account [1002] needn‘t to repay.-----------------------End------------------------------------------Account bill:------------------------------------------End------------------------

    ------- Admin erea ---------    1.  添加账户    2.  查询用户信息    3.  用户信息修改(冻结帐户、用户信用卡额度等)    4.  生成全部用户帐单    5.  退出

>>:5###################Bye,thanks!####################

  1. 普通用户登录(不允许管理员登录)
    python Atm/bin/atm.py
##################Welcome to ATM##################account:1000password:abc

    ------- Oldboy Bank ---------    1.  账户信息    2.  还款(示例)    3.  取款(示例)    4.  转账    5.  存款    6.  账单    7.  退出

>>:1status              :0                   pay_day             :22                  enroll_date         :2016-01-02          balance             :4265.0              expire_date         :2021-01-01          credit              :15000               id                  :1000                

    ------- Oldboy Bank ---------    1.  账户信息    2.  还款(示例)    3.  取款(示例)    4.  转账    5.  存款    6.  账单    7.  退出

>>:2 --------- BALANCE INFO --------        Credit :    15000        Balance:    4265.0Tip: [b] to backInput repay amount:2002017-01-28 09:49:30,934 - transaction - INFO - account:1000   action:repay    amount:200.0   interest:0.0New Balance:4465.0Tip: [b] to backInput repay amount:b

    ------- Oldboy Bank ---------    1.  账户信息    2.  还款(示例)    3.  取款(示例)    4.  转账    5.  存款    6.  账单    7.  退出

>>:3 --------- BALANCE INFO --------        Credit :    15000        Balance:    4465.0Tip: [b] to backInput withdraw amount:2002017-01-28 09:49:44,162 - transaction - INFO - account:1000   action:withdraw    amount:200.0   interest:10.0New Balance:4255.0Tip: [b] to backInput withdraw amount:b

    ------- Oldboy Bank ---------    1.  账户信息    2.  还款(示例)    3.  取款(示例)    4.  转账    5.  存款    6.  账单    7.  退出

>>:4 --------- BALANCE INFO --------        Credit :    15000        Balance:    4255.0

(Tip: input [b] to back)Input receiver:1001Input transfer amount:2002017-01-28 09:50:06,723 - transaction - INFO - account:1000   action:transfer    amount:200.0   interest:10.0New Balance:4045.02017-01-28 09:50:06,723 - transaction - INFO - account:1001   action:receive    amount:200.0   interest:0.0

Input receiver:b

    ------- Oldboy Bank ---------    1.  账户信息    2.  还款(示例)    3.  取款(示例)    4.  转账    5.  存款    6.  账单    7.  退出

>>:5 --------- BALANCE INFO --------        Credit :    15000        Balance:    4045.0

(Tip: input [b] to back)Input your save amount:4002017-01-28 09:53:45,354 - transaction - INFO - account:1000   action:save    amount:400.0   interest:0.0New Balance:4445.0

    ------- Oldboy Bank ---------    1.  账户信息    2.  还款(示例)    3.  取款(示例)    4.  转账    5.  存款    6.  账单    7.  退出

>>:6Please input the date you will query like [2016-12]>>>2016-12Account [1000] bills:--------------------------------------------------bill_date: 2017-1 account_id: 1000 need_repay: 10555

bill_date: 2017-1 account_id: 1000 need_repay: 10555

Account [1000] history log:----------------------------------------------------------------------------------------------------

    ------- Oldboy Bank ---------    1.  账户信息    2.  还款(示例)    3.  取款(示例)    4.  转账    5.  存款    6.  账单    7.  退出

>>:6Please input the date you will query like [2016-12]>>>2017-01Account [1000] bills:--------------------------------------------------bill_date: 2017-1 account_id: 1000 need_repay: 10555

bill_date: 2017-1 account_id: 1000 need_repay: 10555

Account [1000] history log:--------------------------------------------------2017-01-25 21:33:43,281 - transaction - INFO - account:1000   action:pay    amount:10000.0   interest:0.02017-01-25 22:16:26,609 - transaction - INFO - account:1000   action:pay    amount:100.0   interest:0.02017-01-25 22:16:52,347 - transaction - INFO - account:1000   action:pay    amount:100.0   interest:0.02017-01-26 21:47:42,372 - transaction - INFO - account:1000   action:repay    amount:100.0   interest:0.02017-01-26 21:51:13,819 - transaction - INFO - account:1000   action:repay    amount:100.0   interest:0.02017-01-26 21:51:24,608 - transaction - INFO - account:1000   action:withdraw    amount:500.0   interest:25.02017-01-26 21:53:16,352 - transaction - INFO - account:1000   action:withdraw    amount:200.0   interest:10.02017-01-28 09:49:30,934 - transaction - INFO - account:1000   action:repay    amount:200.0   interest:0.02017-01-28 09:49:44,162 - transaction - INFO - account:1000   action:withdraw    amount:200.0   interest:10.02017-01-28 09:50:06,723 - transaction - INFO - account:1000   action:transfer    amount:200.0   interest:10.02017-01-28 09:53:45,354 - transaction - INFO - account:1000   action:save    amount:400.0   interest:0.0--------------------------------------------------

    ------- Oldboy Bank ---------    1.  账户信息    2.  还款(示例)    3.  取款(示例)    4.  转账    5.  存款    6.  账单    7.  退出

>>:7###################Bye,thanks!####################

Process finished with exit code 1
  1. 购物商城已注册用户登录
    python Shopping_mall/bin/shopping_mall.py
------------Welcome to shopping mall!-------------

--------------------------------------------------    1.  Login    2.  Sign up    3.  Logout--------------------------------------------------

>>:1Please input your user name and password!user:testpassword:testInput [y|yes] to view your purchase history,[others] means not.Please input:yUser test shopping history:--------------------------------------------------2017-01-17 17:15:39,199 - shopping - INFO - account:test action:shopping product_number:2 goods:Tea cost:293782017-01-17 17:22:13,163 - shopping - INFO - account:test action:shopping product_number:1 goods:Coffee cost:293482017-01-24 21:55:50,796 - shopping - INFO - account:test action:shopping product_number:2 goods:Milk cost:292302017-01-25 00:05:46,534 - shopping - INFO - account:test action:shopping product_number:1 goods:Coffee cost:292002017-01-25 00:06:07,089 - shopping - INFO - account:test action:shopping product_number:1 goods:Coffee cost:291702017-01-25 00:36:53,038 - shopping - INFO - account:test action:shopping product_number:1 goods:Coffee cost:291402017-01-25 21:33:07,174 - shopping - INFO - account:test action:shopping product_number:1 goods:Coffee cost:30110-------------------Species list-------------------0 --> Mobile phone1 --> Car2 --> Drink-----------------------End------------------------[q|b] to quit;[c] to check;[t] to top upInput your choice:tDo you want to charge more money?[y|n|b]yPlease use your ATM account to pay.Please input your top-up amount:1000account:abcpassword:aAccount [abc] does not exist!account:1000password:abc2017-01-28 10:31:52,106 - transaction - INFO - account:1000   action:pay    amount:1000.0   interest:0.0Pay successedYour balance is [41310]-------------------Species list-------------------0 --> Mobile phone1 --> Car2 --> Drink-----------------------End------------------------[q|b] to quit;[c] to check;[t] to top upInput your choice:2---->Enter Drink-------------------Product list-------------------0.Milk                 59                  1.Coffee               30                  2.Tea                  311                 -----------------------End------------------------[q|quit] to quit;[b|back] to back;[c|check] to checkPlease choice the product:1Please input the number of product:2Added [2] [Coffee] into shopping cart,your balance is [40250]2017-01-28 10:32:07,465 - shopping - INFO - account:test action:shopping product_number:2 goods:Coffee cost:40250-------------------Product list-------------------0.Milk                 59                  1.Coffee               30                  2.Tea                  311                 -----------------------End------------------------[q|quit] to quit;[b|back] to back;[c|check] to checkPlease choice the product:b-------------------Species list-------------------0 --> Mobile phone1 --> Car2 --> Drink-----------------------End------------------------[q|b] to quit;[c] to check;[t] to top upInput your choice:0---->Enter Mobile phone-------------------Product list-------------------0.Iphone7              6188                1.Iphone7 plus         7888                2.Xiaomi5              2888                -----------------------End------------------------[q|quit] to quit;[b|back] to back;[c|check] to checkPlease choice the product:0Please input the number of product:12017-01-28 10:32:20,656 - shopping - INFO - account:test action:shopping product_number:1 goods:Iphone7 cost:34062Added [1] [Iphone7] into shopping cart,your balance is [34062]-------------------Product list-------------------0.Iphone7              6188                1.Iphone7 plus         7888                2.Xiaomi5              2888                -----------------------End------------------------[q|quit] to quit;[b|back] to back;[c|check] to checkPlease choice the product:c*********You purchased products as below**********Goods                Price           Number     Cost                Iphone7              6188            1          6188                Coffee               30              2          60                  ***********************End************************You total cost:                                 6248                Your balance is [34062]-------------------Product list-------------------0.Iphone7              6188                1.Iphone7 plus         7888                2.Xiaomi5              2888                -----------------------End------------------------[q|quit] to quit;[b|back] to back;[c|check] to checkPlease choice the product:b-------------------Species list-------------------0 --> Mobile phone1 --> Car2 --> Drink-----------------------End------------------------[q|b] to quit;[c] to check;[t] to top upInput your choice:q*********You purchased products as below**********Goods                Price           Number     Cost                Iphone7              6188            1          6188                Coffee               30              2          60                  ***********************End************************You total cost:                                 6248                Your balance is [34062]###################Bye,thanks!####################

Process finished with exit code 1
  1. 购物商城新注册用户
    python Shopping_mall/bin/shopping_mall.py
------------Welcome to shopping mall!-------------

--------------------------------------------------    1.  Login    2.  Sign up    3.  Logout--------------------------------------------------

>>:2user:test01password:test01-------------------Species list-------------------0 --> Drink1 --> Mobile phone2 --> Car-----------------------End------------------------[q|b] to quit;[c] to check;[t] to top upInput your choice:c*********You purchased products as below**********Goods                Price           Number     Cost                ***********************End************************You total cost:                                 0                   Your balance is [0]-------------------Species list-------------------0 --> Drink1 --> Mobile phone2 --> Car-----------------------End------------------------[q|b] to quit;[c] to check;[t] to top upInput your choice:q*********You purchased products as below**********Goods                Price           Number     Cost                ***********************End************************You total cost:                                 0                   Your balance is [0]###################Bye,thanks!####################

Process finished with exit code 1
时间: 2024-08-02 02:51:43

Python学习day5作业-ATM和购物商城的相关文章

Python学习day3作业

Python学习day3作业 days3作业 作业需求     HAproxy配置文件操作 根据用户输入,输出对应的backend下的server信息 可添加backend 和sever信息 可修改backend 和sever信息 可删除backend 和sever信息 操作配置文件前进行备份 添加server信息时,如果ip已经存在则修改;如果backend不存在则创建:若信息与已有信息重复则不操作 [x] 博客 [x] 查询backend下的server信息 [x] 添加backend和se

Python实战之网上银行及购物商城

前言:这是初学时写的小项目,觉得有意思就写来玩玩,也当是巩固刚学习的知识.现在看来很不成熟,但还是记录一下做个纪念好了~ 1.名称:网上网上银行及购物商城 2.项目结构: 当时刚接触python啦,哪里注意什么项目结构,就一脑子全塞到一个文件里面了 代码全部在bank.py里面 admin.txt记录所有用户的名字和密码(当时还不会用数据库) locked.txt记录被锁定用户的帐号 huahua.pk是记录huahua这个用户的流水和消费情况 3.效果: 4.主要功能 1.网上银行功能: 能显

python 实现(简单的一个购物商城小程序)

#!/usr/bin/env python #_*_ coding:utf-8 _*_ #商城仓库(这里用字典模拟) goods = {'phone':5200,'camera':3500,'TV':2200} buy = {} #显示商品清单 def show_goods():     print '''         ----商品仓--------         ID   Name   Money         -----------------         商品1.  phone

模拟实现ATM与购物商城

一.功能介绍(第6条未实现)模拟实现一个ATM + 购物商城程序1额度15000或自定义2实现购物商城,买东西加入购物车,调用信用卡接口结账3可以提现,手续费5%4支持多账户登录5支持账户间转账6记录每月日常消费流水7提供还款接口8ATM记录操作日志9提供管理接口,包括添加账户.用户额度,冻结账户等...10用户认证用装饰器 二.实现流程图 三.程序目录结构 ATM_WHW ├── whw_atm ├── README.txt ├── atm #入口程序目录 │ ├── __init__.py

Python学习day2作业总结

为了以后更好更快速的复习,此博客记录我对作业的总结.对于基础作业,我认为最重要的是过程,至于实现是不是完美,代码是不是完美,虽然重要,但是作业过程中,用到的知识点是值得总结和整理的. 一.购物车: 1. 商品信息- 数量.单价.名称  2. 用户信息- 帐号.密码.余额  3. 用户可充值  4. 购物历史信息  5. 允许用户多次购买,每次可购买多件  6. 余额不足时进行提醒  7. 用户退出时 ,输出当次购物信息  8. 用户下次登陆时可查看购物历史  9. 商品列表分级显示 思路: 1.

Python学习day1作业总结

为了以后更好更快速的复习,此博客记录我对作业的总结.对于基础作业,我认为最重要的是过程,至于实现是不是完美,代码是不是完美,虽然重要,但是作业过程中,用到的知识点是值得总结和整理的. 一.模拟登陆: 1. 用户输入帐号密码进行登陆  2. 用户信息保存在文件内  3. 用户密码输入错误三次后锁定用户 思路: 1)输入时用户名后,先判断用户名是否被锁,然后检查用户名是否存在用户数据库:  2)输入相同不存在用户名3次,此用户名被锁:  3)输入用户名存在时才可输入密码,相同用户名时,输入密码错误三

python 学习第三天(简单购物系统)2018.2.20

#_author_:"Bushii" #data:2018/2/20 print("*******************************") print("Welcome to the shopping system.") print("*******************************") money=int(input("Money:")) a=[5800,9000,30,80,1

<潭州教育>-Python学习笔记@作业1

作业: 1.定义讲过的每种数值类型,序列类型 数值类型: 整型:int 字符型:float 字符串:str 布尔型: bool 序列类型: 列表: 有序,可变,元素类型没有固定要求lst = [1,2,3] 元祖:有序,不能改变,元素类型没有固定要求tuple_list = (1,2,3,4,5) 字典: 无序,键值对组合,利于检索dict = {'username':'Stone','passwd':'helloworld'} 集合: 无序,元素类型没有固定要求set_list = {1,2,

<潭州教育>-Python学习笔记@作业2

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; min-height: 13.0px } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC"; color: #008400 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; col