Python 购物车

购物车需求:

可购买的商品信息显示
显示购物车内的商品信息、数量
购物车内的商品数量进行增加、减少
用户余额的充值
用户购买完成进行结账,将最终余额回写到用户文件中  

 

流程图:

 

代码:

 1、主文件 

def login():# 验证用户帐号和密码函数global namelock = "lock.txt"loginfile = "password.txt"login_info = 0i = 0while i < 3 and login_info == 0:name = input("Please input your name: ")with open(lock, "r") as f:for line in f:# if name in line:if name == line.strip():sys.exit('\033[32:1m用户 %s 已经被锁定\033[0m' % name)password = input("Please input password: ")with open(loginfile, "r") as f:for line in f:user_file, pass_file = line.split()if user_file == name and pass_file == password:print("Bingo!")login_info = 1return nameelse:print("You name or password is error!")i += 1else:if i == 3 and login_info == 0:f = open(lock, "a")f.write(name + "\n")f.close()print('\033[32:1m用户 %s 已经被锁定\033[0m' % name)  

 

def show_goods():# 显示当前商店所有商品函数commodity = "commodity.txt"x = PrettyTable(["商品名称", "价格", "数量"])x.align["商品名称"] = "l"  # 以name字段左对齐x.align["价格"] = "r"  # 以name字段右对齐x.align["数量"] = "r"  # 以name字段右对齐x.padding_width = 1  # 填充宽度with open(commodity, "r", encoding='utf-8') as f:for line in f:name, money, number = line.split()x.add_row([name, money, number])print(x)  

 

def show_shopping_cart():# 显示购物车商品函数open_shop_cart()  

 

def show_bought_goods():# 显示已购买商品函数open_bought()  

 

def show_yue(username):# 显示帐号的金额money = "money.txt"x = PrettyTable(["用户", "余额"])x.align["用户"] = "l"  # 以name字段左对齐x.align["余额"] = "r"  # 以name字段右对齐x.padding_width = 1  # 填充宽度with open(money, "r", encoding='utf-8') as f:for line in f:name, money = line.split()if name == username:x.add_row([name, money])print(x)  

 

def show_info():# 显示信息函数print("*****************************")print("修改密码,请输入E:")print("查看购物车,请输入S:")print("查看已购买商品函数,请输入V:")print("充值,请输入M:")print("查询余额,请输入Y:")print("购买商品,请输入B:")print("查看商品数量和价格,请输入G:")print("添加商品到购物车,请输入商品名称:")print("*****************************")return input("请输入你的选择:")  

 

def recharge(username):# 充值函数key = usernamen = input("请输入充值金额:")filename = "money.txt"edit_file_data(filename, username, n, '+')  

 

def add_goods_shopping_cart(key):# 添加商品到购物车函数n = input("请输入购买数量:")file1 = "commodity.txt"file2 = "shop-cart.txt"ret = edit_file_data(file1, key, n, '-')if int(ret) == 1:print("*****************************")print("商品数量不足,请重新选择")returnelse:edit_file_data(file2, key, n, '+')  

 

def goods_bought(username):# 从商品购买函数while True:show_shopping_cart()q = input("输入q返回上级菜单,输入其他键继续:")if q.lower() == 'q':return# else:key = input("请输入购买商品名称:")n = input("请输入购买数量:")file1 = "money.txt"file2 = "shop-cart.txt"file3 = "bought.txt"with open("commodity.txt", "r", encoding='utf-8') as f1:for line in f1:shop = line.split()if str(shop[0]) == str(key):value = shop[2]sum_value = int(n) * int(value)with open(file1, "r", encoding='utf-8') as f1:for line in f1:shop = line.split()if str(shop[0]) == str(username):value = shop[1]if int(sum_value) > int(value):print("*****************************")print("余额不足请充值:")print("*****************************")return recharge(username)ret = edit_file_data(file2, key, n, '-')if int(ret) == 1:print("*****************************")print("购物车中没有这么多商品,请重新选择")print("*****************************")continueelse:edit_file_data(file1, username, sum_value, '-')edit_file_data(file3, key, n, '+')  

 

def edit_password(username):# 修改帐号密码函数passwd1 = input("请输入你的新密码:")passwd2 = input("请再次确认你的密码:")if passwd1 != passwd2:print("*****************************")print("你2次输入的密码不一致,请重新输入")print("*****************************")return edit_password(username)else:file1 = "password.txt"file2 = "tmp.txt"with open(file1, "r", encoding='utf-8') as f1:with open(file2, "w", encoding='utf-8') as f2:for line in f1:shop = line.split()if str(shop[0]) == str(username):shop[1] = str(passwd1)dat_out = " ".join(shop)f2.write(dat_out + "\n")else:dat_out = " ".join(shop)f2.write(dat_out + "\n")move_filename(file1)print("*****************************")print("密码修改成功!")  

 

def open_shop_cart():x = PrettyTable(["商品名称", "数量"])x.align["商品名称"] = "l"  # 以name字段左对齐# x.align["价格"] = "r"  # 以name字段右对齐x.align["数量"] = "r"  # 以name字段右对齐x.padding_width = 1  # 填充宽度with open("shop-cart.txt", "r", encoding='utf-8') as f:for line in f:name, number = line.split()x.add_row([name, number])print("*****************************")print(x)  

 

def open_commodity():x = PrettyTable(["商品名称", "价格", "数量"])x.align["商品名称"] = "l"  # 以name字段左对齐x.align["价格"] = "r"  # 以name字段右对齐x.align["数量"] = "r"  # 以name字段右对齐x.padding_width = 1  # 填充宽度with open("commodity.txt", "r", encoding='utf-8') as f:for line in f:name, money, number = line.split()x.add_row([name, money, number])print(x)  

 

def open_bought():x = PrettyTable(["商品名称", "数量"])x.align["商品名称"] = "l"  # 以name字段左对齐x.align["数量"] = "r"  # 以name字段右对齐x.padding_width = 1  # 填充宽度with open("bought.txt", "r", encoding='utf-8') as f:for line in f:name, number = line.split()x.add_row([name, number])print(x)  

 

def move_filename(filename):# 重命名文件名函数for file in os.listdir('.'):  # os.listdir('.')遍历文件夹内的每个文件名,并返回一个包含文件名的listif file == filename:os.remove(file)for file in os.listdir('.'):if file == "tmp.txt":new_name = filenameos.rename(file, new_name)return  

 

def edit_file_data(filename, key, n, operator):# 修改文件数据函数file2 = "tmp.txt"sign = 0if operator == '+':with open(filename, "r", encoding='utf-8') as f1:with open(file2, "w", encoding='utf-8') as f2:for line in f1:shop = line.split()if str(shop[0]) == str(key):sign = 1shop[1] = str(int(shop[1]) + int(n))dat_out = " ".join(shop)f2.write(dat_out + "\n")else:dat_out = " ".join(shop)f2.write(dat_out + "\n")if sign == 0:shop = [key, str(n)]dat_out = " ".join(shop)f2.write(dat_out + "\n")elif operator == '-':with open(filename, "r", encoding='utf-8') as f1:with open(file2, "w", encoding='utf-8') as f2:for line in f1:shop = line.split()if str(shop[0]) == str(key):if int(shop[1]) < int(n):return 1else:shop[1] = str(int(shop[1]) - int(n))dat_out = " ".join(shop)f2.write(dat_out + "\n")else:dat_out = " ".join(shop)f2.write(dat_out + "\n")move_filename(filename)return 0    

 

#!/usr/bin/env python
# -*- conding:utf-8 -*-
# create a shopping cart system# 20170921
# evescnimport sys
import os
import yaml
from prettytable import PrettyTabledef main():# 验证用户帐号和密码username = login()# 显示当前商店内的所有商品show_goods()while True:# 输出显示信息key = show_info()print("*****************************")if key.lower() == 's':show_shopping_cart()elif key.lower() == 'e':edit_password(username)elif key.lower() == 'v':show_bought_goods()elif key.lower() == 'm':recharge(username)elif key.lower() == 'y':show_yue(username)elif key.lower() == 'b':goods_bought(username)elif key.lower() == 'g':show_goods()else:add_goods_shopping_cart(key)if __name__ == "__main__":main() 

  

 2、用户帐号密码文件 

# password.txt
evescn 123456
gmkk 12321   

 

 3、用户金额文件 

# money.txt
evescn 30
gmkk 200  

 

 4、商品文件  

# commodity.txt
《Python入门》 5 100
《Python放弃》 12 100
瓜子 89 10
苹果 55 5
西瓜 15 2
葡萄 12 3
西红柿 8 4

  

 5、购物车文件  

# shop-cart.txt
瓜子 6
苹果 2
西瓜 3
西红柿 2

  

 6、已购商品文件  

# bought.txt
瓜子 1

  

运行结果:

  1、修改用户密码测试 

Please input your name: evescn
Please input password: 123456
Bingo!
+----------------+------+------+
| 商品名称       | 价格 | 数量 |
+----------------+------+------+
| 《Python入门》 |    5 |  100 |
| 《Python放弃》 |   12 |  100 |
| 瓜子           |   89 |   10 |
| 苹果           |   55 |    5 |
| 西瓜           |   15 |    2 |
| 葡萄           |   12 |    3 |
| 西红柿         |    8 |    4 |
+----------------+------+------+
*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:e
*****************************
请输入你的新密码:Gmkk
请再次确认你的密码:gmkk
*****************************
你2次输入的密码不一致,请重新输入
*****************************
请输入你的新密码:gmkk
请再次确认你的密码:gmkk
*****************************
密码修改成功!
*****************************  

 

# password.txt 文件内容
evescn gmkk
gmkk 12321  

 

 2、添加商品到购物车测试 

# 原商品文件信息《Python入门》 5 100
《Python放弃》 12 100
瓜子 89 10
苹果 55 5
西瓜 15 2
葡萄 12 3
西红柿 8 4# 原购物车文件信息瓜子 6
苹果 2
西瓜 3
西红柿 2  

 

Please input your name: evescn
Please input password: 123456
Bingo!
+----------------+------+------+
| 商品名称       | 价格 | 数量 |
+----------------+------+------+
| 《Python入门》 |    5 |  100 |
| 《Python放弃》 |   12 |  100 |
| 瓜子           |   89 |   10 |
| 苹果           |   55 |    5 |
| 西瓜           |   15 |    2 |
| 葡萄           |   12 |    3 |
| 西红柿         |    8 |    4 |
+----------------+------+------+
*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:瓜子
*****************************
请输入购买数量:20
*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:  

 

# 商品文件信息《Python入门》 5 100
《Python放弃》 12 100
瓜子 69 10
苹果 55 5
西瓜 15 2
葡萄 12 3
西红柿 8 4# 购物车文件信息瓜子 26
苹果 2
西瓜 3
西红柿 2  

 

 3、充值测试和显示余额测试 

# 充值前 money.txt 文件
evescn 30
gmkk 200  

 

*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:m
*****************************
请输入充值金额:200
*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:y
*****************************
+--------+------+
| 用户   | 余额 |
+--------+------+
| evescn |  230 |
+--------+------+
*****************************  

 

 4、显示购物车 

*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:s
*****************************
+----------+------+
| 商品名称 | 数量 |
+----------+------+
| 瓜子     |   26 |
| 苹果     |    2 |
| 西瓜     |    3 |
| 西红柿   |    2 |
+----------+------+
*****************************  

 

 5、显示已购商品 

*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:v
*****************************
+----------+------+
| 商品名称 | 数量 |
+----------+------+
| 瓜子     |    1 |
+----------+------+
*****************************  

 

 6、购买商品 

*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:b
*****************************
*****************************
+----------+------+
| 商品名称 | 数量 |
+----------+------+
| 瓜子     |   26 |
| 苹果     |    2 |
| 西瓜     |    3 |
| 西红柿   |    2 |
+----------+------+
输入q返回上级菜单,输入其他键继续:
请输入购买商品名称:瓜子
请输入购买数量:20
*****************************
+----------+------+
| 商品名称 | 数量 |
+----------+------+
| 瓜子     |    6 |
| 苹果     |    2 |
| 西瓜     |    3 |
| 西红柿   |    2 |
+----------+------+
输入q返回上级菜单,输入其他键继续:
请输入购买商品名称:瓜子
请输入购买数量:5
*****************************
余额不足请充值:
*****************************
请输入充值金额:200
*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:b
*****************************
*****************************
+----------+------+
| 商品名称 | 数量 |
+----------+------+
| 瓜子     |    6 |
| 苹果     |    2 |
| 西瓜     |    3 |
| 西红柿   |    2 |
+----------+------+
输入q返回上级菜单,输入其他键继续:
请输入购买商品名称:瓜子
请输入购买数量:7
*****************************
购物车中没有这么多商品,请重新选择
*****************************
*****************************
+----------+------+
| 商品名称 | 数量 |
+----------+------+
| 瓜子     |    6 |
| 苹果     |    2 |
| 西瓜     |    3 |
| 西红柿   |    2 |
+----------+------+
输入q返回上级菜单,输入其他键继续:
请输入购买商品名称:瓜子
请输入购买数量:6
*****************************
+----------+------+
| 商品名称 | 数量 |
+----------+------+
| 瓜子     |    0 |
| 苹果     |    2 |
| 西瓜     |    3 |
| 西红柿   |    2 |
+----------+------+
输入q返回上级菜单,输入其他键继续:q
*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:  

 

# 运行后文件数据*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:y
*****************************
+--------+------+
| 用户   | 余额 |
+--------+------+
| evescn |  170 |
+--------+------+
*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:s
*****************************
*****************************
+----------+------+
| 商品名称 | 数量 |
+----------+------+
| 瓜子     |    0 |
| 苹果     |    2 |
| 西瓜     |    3 |
| 西红柿   |    2 |
+----------+------+
*****************************
修改密码,请输入E:
查看购物车,请输入S:
查看已购买商品函数,请输入V:
充值,请输入M:
查询余额,请输入Y:
购买商品,请输入B:
查看商品数量和价格,请输入G:
添加商品到购物车,请输入商品名称:
*****************************
请输入你的选择:v
*****************************
+----------+------+
| 商品名称 | 数量 |
+----------+------+
| 瓜子     |   27 |
+----------+------+
*****************************  

 

 已知的bug问题:

没有对用户输入的商品进行判断,一旦用户输入的商品不存在,将会报错(添加商品到购物车和购买商品时需要输入商品名称)

  

 

转载于:https://www.cnblogs.com/python-gm/p/7562020.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

认对画对MOS管

MOS管我们在设计电路中经常用的一种无源器件。 首先介绍下&#xff0c;在原理图和PCB以及实物PCBA中如何辨别各种MOS管&#xff0c;作为应用好的先决条件&#xff0c;必须认对画对管子。 1. MOS管的GSD三极在原理图和PCB上怎么判定&#xff1a; G极(gate)—栅极&#xff0c;原…

Jmeter之BeanShell

在Jmeter中各种分类组件中都有相应的BeanShell组件&#xff0c;这里简单的说明一下Beanshell的使用。 一、概念 BeanShell是一种符合Java语法的脚本语言&#xff0c;也有自己的一些特定语法 二、内置变量 Jmeter在它的Beanshell中内置了变量&#xff0c;用户可以通过这些变量与…

HDU 1875 畅通工程再续

传送门&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1875 简单的最小生成树 #include <iostream> #include <cstdio> #include <cmath> using namespace std;const int maxn100005; const double INF1.0e20;struct Node{double x,y; } isl[maxn];…

C语言变长数组 struct中char data[0]的用法

摘要&#xff1a;在实际的编程中&#xff0c;我们经常需要使用变长数组&#xff0c;但是C语言并不支持变长的数组。此时&#xff0c;我们可以使用结构体的方法实现C语言变长数组。 struct MyData {int nLen;char data[0];}; 在结构中&#xff0c;data是一个数组名&#xff1b;但…

MOS管的实际应用

继上一篇“认对画对MOS管”后&#xff0c;现在小结一下MOS管的具体应用&#xff1a; 应用MOS管前&#xff0c;理解MOS管每个参数的具体意义后&#xff0c;再额外注意一下管子本身的体二极管&#xff0c;本身Vf1.6V&#xff0c;导通后管子本身阻抗一般是mΩ级&#xff1b;管子厂…

imp导入前对当前用户清库脚本

--清空当前用户所有表begin for i in ( select drop table || a.tab_name as sqls from (select distinct t.tab_name from (select Lower(table_name) as tab_name from user_tables) t) a ) loop dbms_output.put_line(i.sqls); execute immediate i.sqls; end loop;end;/--清…

Spring - Spring Boot Spring Cloud

Spring -> Spring Boot > Spring Cloud 这几天刚刚上班&#xff0c;公司用的是Spring Cloud&#xff0c;接触不多。我得赶快学起来。 想学习就必须得知道什么是微服务&#xff0c;什么是Spring Boot&#xff0c;什么是Spring Cloud&#xff0c;以及两者之间有什么关系&am…

C语言 · 前10名

算法提高 前10名 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述数据很多&#xff0c;但我们经常只取前几名&#xff0c;比如奥运只取前3名。现在我们有n个数据&#xff0c;请按从大到小的顺序&#xff0c;输出前10个名数据。输入格式两行。第一行一个整数n…

ssacanf\Sprintf格式化字符串

一、sscanf sscanf() - 从一个  int sscanf(const char *buffer,const char *format,[argument ]...); buffer 存储的数据 format 格式控制字符串 argument 选择性设定字符串 sscanf会从buffer里读进数据&#xff0c;依照argument的设定将数据写回。字符串中读进与指定格式相…

防火墙规则

1、iptables -t -L -n -t指定表格 -L 显示目前表格的规则 -n 数字显示2、iptables-save 以命令方式显示规则3、清除清空filter从头制定规则 ipatables -F 清除已经定义 iptables -X 清除自定义链 iptables -z 清除链统计和计数4、设定默认规则,当所有规则不匹…

JAVA中循环删除list中元素的方法总结

印象中循环删除list中的元素使用for循环的方式是有问题的&#xff0c;但是可以使用增强的for循环&#xff0c;然后今天在使用时发现报错了&#xff0c;然后去科普了一下&#xff0c;再然后发现这是一个误区。下面就来讲一讲。。伸手党可直接跳至文末。看总结。。 JAVA中循环遍历…

直流有刷电机与无刷电机的区别

首先介绍有刷电机与无刷电机工作原理&#xff0c;最后从调速方式及性能差异这两个方面详细的阐述了有刷电机与无刷电机的区别。 有刷电机与无刷电机工作原理 1、有刷电机 电机工作时&#xff0c;线圈和换向器旋转&#xff0c;磁钢和碳刷不转&#xff0c;线圈电流方向的交替变化…

MapReduce详解

MapReduce简介 MapReduce是一种编程模型&#xff0c;用于大规模数据集&#xff08;大于1TB&#xff09;的并行运算。概念"Map&#xff08;映射&#xff09;"和"Reduce&#xff08;归约&#xff09;"&#xff0c;是它们的主要思想。 MapReduce极大地方便了编…

JavaScriptBreak 语句 continue 语句

break 语句用于跳出循环。 continue 用于跳过循环中的一个迭代。 Break 语句 我们已经在本教程之前的章节中见到过 break 语句。它用于跳出 switch() 语句。 break 语句可用于跳出循环。 continue 语句跳出循环后&#xff0c;会继续执行该循环之后的代码&#xff08;如果有的话…

kernel mtd 分区与UBOOT 分区的理解

今天做内核移植&#xff0c;准备添加NAND flash的驱动&#xff0c;做到MTD分区时&#xff0c;想起在一本书上看到的一句话&#xff0c;说的是分区时每个区之间没有间隙&#xff0c;前一个区的结束地址是后一个区的起始地址。可是当我看我的开发板的教程时&#xff0c;分区如下&…

运放的主要参数详细介绍

1. 引言 运放的作用是调节和放大模拟信号&#xff0c;它是用途十分广泛的器件&#xff0c;接入适当的反馈网络&#xff0c;可用作精密的交流和直流放大器、有源滤波器滤波器、振荡器振荡器及电压比较器。其应用领域包括但不限制通讯、电子、汽车、工业检测等等&#xff0c;并将…

FastDFS 文件上传工具类

FastDFS文件上传工具类 import org.csource.common.NameValuePair;import org.csource.fastdfs.ClientGlobal;import org.csource.fastdfs.StorageClient1;import org.csource.fastdfs.StorageServer;import org.csource.fastdfs.TrackerClient;import org.csource.fastdfs.Tra…

MOS管的主要参数与重要特性

双极性晶体管&#xff1a;NPN和PNP管&#xff1b; 单极性晶体管&#xff1a;场效应管&#xff08;MOSFET和JFET&#xff09;&#xff1b; MOS管相对三极管具有速度快、输入阻抗高、噪声低、动态范围大、功耗小、容易集成等优点。 下面总结下其主要参数与重要特性&#xff0c…

【Codeforces Round #430 (Div. 2) B】Gleb And Pizza

【链接】点击打开链接 【题意】 在这里写题意【题解】 根据圆心到原点的距离这个东西判断一下圆在不在那个环里面就好【错的次数】 0【反思】 在这了写反思【代码】 #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #…

垂直居中方法总结

<style>#box{position: absolute;margin: auto;top:0px;right: 0px;bottom: 0px;left: 0px;width: 100%;height: 30%;background-color: red;text-align: center;} </style> <body><div id"box"><h1>文字居中</h1></div> …