栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【深度学习】Part1 Python学习基础Ch07~Ch0——DeepBlue学习

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【深度学习】Part1 Python学习基础Ch07~Ch0——DeepBlue学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

Python基础——Ch07~Ch0
  • 7. 运算符、优先级
    • 7.1 算数运算符
    • 7.2 比较运算符
    • 7.3 赋值运算符
      • 7.3.1 增强赋值
      • 7.3.2 序列赋值
      • 7.3.3 多目标赋值
    • 7.4 逻辑运算符
    • 7.5 成员运算符
    • 7.6 身份运算符
    • 7.7 位运算符
    • 7.8 运算符优先级
    • 7.9 +、+=、* 的连接操作
  • 8. 条件语句
    • 8.1 三元表达式
    • 8.2 if 语句嵌套
    • 8.3 条件语句特点
    • 8.4 实现:石头剪刀布游戏
  • 9. 循环语句
    • 9.1 while 循环
    • 9.2 for 循环
    • 9.3 循环控制语句
    • 9.4 优化:石头剪刀布游戏
    • 9.5 pass 语句
  • 10. 推导式
    • 10.1 列表推导式


7. 运算符、优先级 7.1 算数运算符

a = 3 
b = 2 
d = a + b 
print(d) # 5 
d = a - b 
print(d) # 1 
d = a * b 
print(d) # 6 
d = a / b 
print(d) # 1.5 
# 取模(除法的余数)
d = a % b 
print(d) # 1 

# 相当于 / 再向下取整 
d = a // b 
print(d) # 1 

# 10**8 还可以用科学计数法写成 1e8 
d = a ** b 
print(d) # 9 
d = 10 ** 8 
print(d) # int 
f = 1e8 
print(f) # float

负数取整,取模

print(15 // 4) # 15 / 4等于3点几,然后再向下取整,取更小的最接近的整数3
 print(-15 // 4) # -15 / 4等于负3点几,然后再向下取整,取更小的最接近的整数-4 
 print(15 % 4) # 余数 = 15 - (3*4) = 3 
 print(-15 % 4) # 余数 = -15 - (-4*4) = 1 
 # 规律: (a % b) + (-a % b) = b或0 (当a为0时,为0)
7.2 比较运算符

返回布尔值:True,False

a = 20 
b = 9 
c = a == b 
print(c) # False
 c = a != b 
 print(c) # True 
 c = a > b 
 print(c) # True 
 c = a < b 
 print(c) # False 
 c = a >= b 
 print(c) # True 
 c = a <= b 
 print(c) # False
7.3 赋值运算符

a = 3 
c = a + 2 
print(c) # 5 
c += a 
print(c) # 8 结果等于 c = c + a 
c -= a 
print(c) # 5 结果等于 c = c - a 
c *= a 
print(c) # 15 结果等于 c = c * a 
c /= a 
print(c) # 5.0 结果等于 c = c / a 
c %= a 
print(c) # 2.0 结果等于 c = c % a 
c **= a 
print(c) # 8.0 结果等于 c = c ** a 
c //= a
print(c) # 2.0 结果等于 c = c // a

:= 海象运算符

# 写法一: 
string = "hello world" 
length = len(string) 
print(length + 5) 
print(f"string的长度为{length}") 

# 写法二: 
string = "hello world" 
print(len(string) + 5) 
print(f"string的长度为{len(string)}") 

# 写法三: 
# 海象运算符,可在表达式内部为变量赋值,记得加括号,不然就是赋值len(string) + 5的返回值了 
# 相对写法一:避免了一次赋值给中间变量的步骤 
# 相对写法二:避免使用两次len方法 
string = "hello world" 
print((length := len(string)) + 5) 
print(f"string的长度为{length}")
7.3.1 增强赋值

增强赋值在条件符合的情况下(例如:操作数是一个可变类型对
象)会以追加的方式来进行处理,而普通赋值则会以新建的方式进
行处理,此时增强赋值语句比普通赋值语句的效率是更高的,但是
也要注意因此产生的问题

""" 增强的赋值运算符 += -= *= /= %= **= //= """ 
lis1 = [1, 2] 
lis2 = lis1
lis1 = lis1 + [3, 4] 
print(lis1) # [1, 2, 3, 4] 
print(lis2) # [1, 2] 

lis1 = [1, 2] 
lis2 = lis1 
lis1 += [3, 4] 
print(lis1) # [1, 2, 3, 4] 
print(lis2) # [1, 2, 3, 4] 

# a = 12 
# b = a 
# a = a + 1 
# print(a) # 13 
# print(b) # 12 

# a += b # 等效于 a = a + b 

# a = 12 
# b = a 
# a += 1 # 等效于 a = a + 1 
# print(a) # 13 
# print(b) # 12
7.3.2 序列赋值
a, b = 3, 4 # 等同于 (a,b) = (3,4) 
print(a, b) 
[a, b] = [3, 4] 
print(a, b) 
[a, b] = [3, 4] 
print(a, b)

a, b, c = [3, 4, 5] 
print(a, b, c) 
a, b, c = "你好吗" 
print(a, b, c)
7.3.3 多目标赋值
a = b = c = 999 
d = 999 
print(id(a)) 
print(id(b)) 
print(id(c)) 
print(id(d)) 
b = d 
print(id(b)) 
a = b = c = [1, 2, 3] 
b.append(4) 
print(a, b, c)
7.4 逻辑运算符

# None, False, 0, 空列表/空元组/空字典/空集合都会被认定为 False 
a = 2 
b = "hello world" 
c = [] 
d = 0 

# 左边为假,返回左边;否则返回右边 
print(c and a) # [] 
print(c and d) # [] 
print(d and c) # 0 
print(a and c) # [] 
print(a and b) # "hello world" 
print(b and a) # 2 

# 左边为真,返回左边;否则返回右边 
print(a or c) # 2 
print(a or b) # 2 
print(b or a) # "hello world" 
print(c or a) # 2 
print(c or d) # 0 
print(d or c) # [] 

# 假,返回真;真,返回假 
print(not a) # False 
print(not b) # False 
print(not c) # True 
print(not (a and c)) # True 

# 优先级:not > and > or 
print(not a or c) # []

规律:
and 只要有其中一边为 False,最后结果一定为 False;只有两边都为 True 的情况下,最后结果才为 True。
or 只要有其中一边为 True,最后结果就为 True;只有两边都为 False 的情况下,最后结果才为 False。

短路原则: 如果前面的部分已经计算出整个表达式的结果,则后面的部分不再计算(考虑优先级)。

a = 0 
b = 1 
print(a == 0 or b / a > a) 
print(a > 0 and b / a > a) 
print(a > 0 or b / a > a)
7.5 成员运算符

返回布尔值:True,False(判断对象中是否存在某个元素)

str1 = "hello world" 
list1 = [1, 2, 3, 4, 5] 
tuple1 = (1, 2, 3, 4, 5) 
set1 = {1, 2, 3, 4, 5} 
a = "hel" in str1 
b = 4 in list1 
c = 4 in tuple1 
d = 4 in set1 
print(a,b,c,d) # True True True True

a = "hel" not in str1 
b = 4 not in list1 
c = 4 not in tuple1 
d = 4 not in set1 
print(a,b,c,d) # False False False False
7.6 身份运算符

返回布尔值:True,False

a = 257 
b = 257 
print(a == b) 
print(a is b) 
print(id(a)) 
print(id(b)) 
a = 256 
b = 256 
print(a == b) 
print(a is b) 
print(id(a)) 
print(id(b))

is 和 == 的区别
is 是身份运算符,判断对象的地址是否相同;而 == 是比较运算符,判断对象的值是否相等
判断两个变量是否相等,实际上式需要判断两个条件:

  1. 变量的值是否相等;
  2. 变量的内存地址是否相同。
7.7 位运算符

位运算符是把数字看作二进制来进行计算的

进制转换函数

bin(x)
将一个整数转变为一个前缀为“0b”的二进制字符串。

print(bin(3)) # 0b11 
print(bin(-100)) # -0b1100100

hex(x)
将一个整数转变为一个前缀为“0x”的十六进制字符串。

print(hex(255)) # 0xff 
print(hex(-42)) # -0x2a

oct(x)
将一个整数转变为一个前缀为“0o”的八进制字符串。

print(oct(255)) # 0o377 
print(oct(-42)) # -0o52
a = 60 # 二进制 60 = 0011 1100 
b = 13 # 二进制 13 = 0000 1101 
c = a & b # 12 = 0000 1100 同都为真(1和1), 才为真 
print(c) 

c = a | b # 61 = 0011 1101 一个真(至少一个1), 就为真 
print(c) 

c = a ^ b # 49 = 0011 0001 不同(01或者10), 就为真 
print(c) 

c = a ^ b ^ a # 一个数异或于同一个数两次,结果还是它本身 
print(c) # 13

在计算机中,负数以原码的补码形式表达
负数的反码:对该数的原码除符号位外各位取反
负数的补码:对该数的原码除符号位外各位取反,然后在最后一位加1 (即反码+1)
正数的反码和补码都与原码相同

# 23的原码:0,0010111 右移两位舍弃右边的两位,最高位使用符号位填充:000,00101 还原成十进制就是5
# 右移三位舍弃右边的三位:0000,0010 还原成十进制就是2 
print(23 >> 2, 23 >> 3) 

# 23的原码:0,0010111 左移两位后面补两个0:0,001011100 换算成十进制就是92
# 左移三位后面补三个0:0,0010111000 换算成十进制就是184 
print(23 << 2, 23 << 3)

# 因为在计算机中,负数以原码的补码形式表达,所以先算出补码,再来移位(符号位1代表负数) 
# -23原码:1,0010111 -23反码:1,1101000 -23补码: 1,1101001 
# 补码向右移两位得到:111,11010 这个还是补码形式,需要先转成原码再换算成十进制 
# 补码转成原码就是逆过程:111,11010减一再取反码就是原码了,得到:111,00110 换算成十进制就是-6
# 补码向右移三位得到:1111,1101 这个还是补码形式,需要先转成原码再换算成十进制 
# 补码转成原码就是逆过程:1111,1101减一再取反码就是原码了,得到:1111,0011 换算成十进制就是-3 
# 补码向左移两位得到:1,110100100 这个还是补码形式,需要先转成原码再换算成十进制 
# 补码转成原码就是逆过程:1,110100100减一再取反码就是原码了,得到:1,001011100 换算成十进制就是-92
# 补码向左移三位得到:1,1101001000 这个还是补码形式,需要先转 成原码再换算成十进制 
# 补码转成原码就是逆过程:1,1101001000减一再取反码就是原码了,得到:1,0010111000 换算成十进制就是-184 
print(-23 >> 2, -23 >> 3) 
print(-23 << 2, -23 << 3)

按位取反运算符,对数据的每个二进制位取反(包括符号位)

# 23的原码:0,0010111 按位取反:1,1101000 
# 按位取反之后变成了负数, 负数在计算机中以原码的补码形式表达,所以需要先转成原码再换算成十进制 
# 补码转成原码就是逆过程:1,1101000减一再取反码就是原码了,得到:1,0011000 换算成十进制就是-24 
print(~23) 

# 负数在计算机中以原码的补码形式表达,所以先算出补码,再来按位取反 
# -23原码:1,0010111 -23反码:1,1101000 -23补码: 1,1101001 
# 再来按位取反得到:0,0010110 按位取反之后变成了正数,正数直接换算成十进制就是22 
print(~-23)
7.8 运算符优先级

以下表格列出了从高到低优先级的常用运算符:

7.9 +、+=、* 的连接操作

+、+=、* 还可以对字符串、列表、元组进行连接操作(要保证连接对象的类型一致)

a = "1" 
b = "2" 
c = a + b 
print(c) # '12' 
a = ["1"] 
b = [2, 3] 
c = a + b 
print(c) # ['1', 2, 3] 
a = ("1",) 
b = (2, 3) 
c = a + b 
print(c) # ('1', 2, 3) 
a = "1" 
b = "2" 
a += b # a = a + b 
print(a) # '12' 
a = ["1"] 
b = [2, 3] 
a += b 
print(a) # ['1', 2, 3]
a = ("1",) 
b = (2, 3) 
a += b 
print(a) # ('1', 2, 3) 
a = "1" 
b = a * 3 
print(b) # "111" 
a = ["1"] 
b = a * 3 
print(b) # ['1', '1', '1'] 
a = ("1",) 
b = a * 3 
print(b) # ('1', '1', '1')
8. 条件语句

格式一:
if 判断条件:
执行语句…

sex = '男' 
if sex == '男': 
	print("男士请进") 
	print("这是男士专用卫生间...") 
sex = "女" 
if sex == '女': 
	print("女士请进"); 
	print("这是女士专用卫生间...")

格式二 :
if 判断条件:
执行语句…
else:
执行语句…

sex = '男' 
if sex == '男': 
	print('男士请进') 
else:
	print('女士请进')

格式三:
if 判断条件1:
执行语句1…
elif 判断条件2:
执行语句2…
elif 判断条件3:
执行语句3…
else:
执行语句4…

sex = input("请输入你的性别 (男/女): ") 
if sex == "男": 
	print("男士请进") 
elif sex == "女": 
	print("女士请进") 
else:
	print("输入错误!") 
	print("程序结束")
8.1 三元表达式

它是一个表达式,而不是一个结构化的代码块

score = float(input("请在下方输入你的考试分数:n")) 
if score >= 90: 
	print("牛逼") 
elif score >= 80: 
	print("优秀") 
elif score >= 60: 
	print("可以") 
# elif score < 60: 
# 	print("同志仍需努力") 
else:
	print("同志仍需努力") 

# 三元表达式 
result = print("牛逼") if score >= 90 else print("优秀") if score >= 80 else print("可以") if score >= 60 else print("同志仍需努力") 
print(result) # None 

if score >= 90: 
	result = "牛逼" 
elif score >= 80: 
	result = "优秀" 
elif score >= 60:
	result = "可以"
else:
	result = "同志仍需努力" 
print(result) 

# 三元表达式 result = "牛逼" if score >= 90 else "优秀" if score >= 80 else "可以" if score >= 60 else "同志仍需努力" 
print(result) 

print("老师说我" + ("牛逼" if score >= 90 else "优秀" if score >= 80 else "可以" if score >= 60 else "同志仍需努力"))
8.2 if 语句嵌套
print("敲门声: 咣咣咣~")
sex = input("请输入你的性别 (男/女): ") 
if sex == "男": 
	print("滚犊子...") 
else:
	answer = input("请问是不是包租婆? (是/不是): ") 
	if answer == '是': 
		print("屋里没人...") 
	else:
		answer2 = input("请问是不是小姐姐? (是/不是): ") 
		if answer2 == '是': 
			print("请进, 你是找我的吗?") 
		else:
			print("不好意思, 您找错人了...") 

# 三元表达式嵌套(了解一下)
print("不好意思, 我今天不能见男的, 您请回吧") if input("请问你是男是女 (男/女): ") == "男" else (print("不好意思, 今天我不在家, 房租下次给你") if input("请问是包租婆吗? (是/不是): ") == "是" else (print("小姐姐, 您好, 请进...") if input("请问你是小姐姐吗? (是/不是): ") == "是" else print("不好意思, 我今天不宜面圣, 您请回吧")))
8.3 条件语句特点

每个条件语句只会满足一次结果

num = 5 
if num > 0: # 满足条件, 输出a, 后面就不会执行了 
	print("a") 
elif num > 1: 
	print("b") 
elif num > 2: 
	print("c") 
elif num > 3: 
	print("d") 
else:
	print("e") 
if num > 4: # 然后又跳到这个条件语句中执行 
	print("f") 
else:
	print("g")

进行 bool 判断时,任何非零 / 非None / 非空值为 True,反之为False

if 123456: 
	print("123456为True") 
if []:
	print("[]为True") 
else:
	print("[]为False")
8.4 实现:石头剪刀布游戏
import random 
INFO = {0: "石头", 1: "剪刀", 2: "布"} # ["石头", "剪 刀", "布"] 
computer = random.randint(0, 2) 
player = int(input("请出拳! 输入0代表石头、1代表剪刀、2代表 布: ")) 

# 展示电脑和玩家的出拳结果 
print(f"电脑出拳: {INFO[computer]}n玩家出拳: {INFO[player]}") 

# 判断谁输谁赢 
if computer == player: 
    print("平局!") 
elif player-computer == -1 or player-computer == 2: 
    print("玩家胜利!") 
else:
    print("电脑胜利!")

random 模块常用函数
random.random() 返回 [0.0, 1.0) 范围内的随机浮点数
random.randint(a, b) 返回 [a, b] 范围内的随机整数
random.uniform(a, b) 返回 [a, b] / [b, a] 范围内的随机浮点数
random.choice(seq) 从非空序列 seq 返回一个随机元素。 如果seq 为空,则引发 IndexError
random.sample(population, k) 从序列或者集合中随机获取k个元素,以列表形式返回(Python3.9 版本, 集合中采样已弃用)
random.shuffle(x) 将可变序列 x 随机打乱位置
random.randrange ([start,] stop [,step]) 等效于从 range(start, stop, step) 里随机返回一个元素
random.seed ([x]) 起固定随机数的作用,x 可以是任意数字(x可以理解为种子的名字)

import random 
# 返回 [0.0, 1.0) 范围内的随机浮点数 
a = random.random() 
print(a) 

# 返回 [2, 4] 范围内的随机整数 
a = random.randint(2, 4) 
print(a) 

# 返回 [2.5, 3.5] 范围内的随机浮点数 
a = random.uniform(2.5, 3.5)
a = random.uniform(3.5, 2.5) 
print(a) 

# 从序列返回一个随机元素 
a = random.choice(range(10)) 
print(a) 

# 从序列中随机获取k个元素,以列表形式返回 
a = random.sample(("a", 1, 2, 3, "b"), 2)
print(a) 

# 从集合中随机获取k个元素,以列表形式返回 
a = random.sample({"a", 1, 2, 3, "b"}, 2) 
print(a) 

# 将可变序列随机打乱位置 
a = [1, 2, 3, 4, 5] 
random.shuffle(a) 
print(a) 

# 从[star, stop)范围按照step步长组成的数据范围里返回一个随机数 
a = random.randrange(start=2, stop=100, step=2) 
print(a) 

# 设定好种子之后,每次执行程序随机数将是固定的 
# 使用相同的随机数种子,生成的随机数值是一样的 
print(random.random()) 
random.seed(10) 
print("seed10:", random.random()) 
random.seed(7) 
print("seed7:", random.random()) 
random.seed(10) 
print("seed10:", random.random())
9. 循环语句 9.1 while 循环

格式:
while 判断条件:
执行语句…

a = 1 
while a < 4: 
	print(a) # 1 2 3 
	a += 1

while True:

a = 0 
while True: 
	print("hello") 
	a += 1 
	if a == 3: 
		break

while … else

count = 0 
while count < 5: 
	print(count, "小于5") 
	count = count + 1 
else:
	print(count, "大于或等于 5")
	
count = 0 
while count < 5: 
	print(count, "小于5") 
	count = count + 1 
print(count, "大于或等于 5") 
	
count = 0 
while True: 
	print(count, "小于5") 
	count = count + 1 
	if count >= 5: 
		break 
	else:
		print(count, "大于或等于 5") 

count = 0 
while True: 
	print(count, "小于5") 
	count = count + 1 
	if count >= 5: 
		break 
print(count, "大于或等于 5")

while 循环嵌套

# 实现九九乘法表 
right = 1 
while right <= 9: 
	left = 1 
	while left <= right: 
		print(f"{left}x{right}={left*right}", end="t")
		left += 1 
	print() 
	right += 1
9.2 for 循环

for 变量 in 可迭代对象:
执行语句…

str1 = "123ab" 
lis1 = [1, 2, 3, "a", "b"] 
tup1 = (1, 2, 3, "a", "b") 
dic1 = {"one": 1, "two": 2} 
set1 = {3, 2, 4, "a"} 
for i in str1: 
	print(i) 
for i in lis1: 
	print(i) 
for i in tup1: 
	print(i) 
for i in dic1: 
	print(i)
for i in set1: 
	print(i)

当循环变量不用时可以使用“_”代替

for … in … else

for i in [1, 2, 3, 4]: 
	print(i) 
	if i > 2: 
		break 
else:
	print(5) 

for i in [1, 2, 3, 4]: 
	print(i) 
	if i > 2: 
		break 
print(5)

for 循环嵌套

# 实现九九乘法表 
for right in range(1, 10): 
	for left in range(1, right+1): 
		print(f"{left}x{right}={left*right}", end="t") 
	print()

range(stop) / range(start, stop[, step])
返回一个按步骤生成的从start(包括)到stop(不包括)的整数序列,它是不可变的序列
start:计数从 start 开始,默认是从 0 开始
stop:计数到 stop 结束,但不包括 stop
step:步长,默认为1
range 类型相比常规 list 或 tuple 的优势在于一个 range 对象总是占用固定数量的(较小)内存,不论其所表示的范围有多大(因为它只保存了 start, stop 和 step 值)

print(list(range(4))) # [0, 1, 2, 3] 
print(list(range(1, 5))) # [1, 2, 3, 4] 
print(list(range(1, 8, 2))) # [1, 3, 5, 7] 
print(list(range(8, 1, -2))) # [8, 6, 4, 2]

enumerate(iterable, start=0)
返回一个enumerate对象(迭代器)。迭代它会得到一个个的元组,每个元组是索引(从start开始,默认为 0)和索引对应iterable的值组成的

seasons = ['Spring', 'Summer', 'Fall', 'Winter'] 
object1 = enumerate(seasons) #  
print(list(object1)) # [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] 
object2 = enumerate(seasons, start=1) # 设置开始迭代的索引
print(list(object2)) # [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
9.3 循环控制语句

break
终止所在的循环

for i in range(3): 
	for j in range(3): 
		print("hello") 
		break # 只终止所在的循环, 所以输出3个 hello

continue
跳过当前,继续到循环位置

a = 0 
while a <= 5: 
	if a == 3: 
		a += 1 
		continue 
	print(a) 
	a += 1
9.4 优化:石头剪刀布游戏
import random
INFO = {0: "石头", 1: "剪刀", 2: "布"} # ["石头", "剪 刀", "布"] 
while True: 
	computer = random.randint(0, 2) 
	while True: 
		player = int(input("请出拳! 输入0代表石头、1代表剪 刀、2代表布: "))
		# 判断输入是否有误 
		if player in [0, 1, 2]: 
			# 展示电脑和玩家的出拳结果 
			print(f"电脑出拳: {INFO[computer]}n玩家出拳: {INFO[player]}") 
			# 判断谁输谁赢 
			if computer == player: 
				print("平局!") 
			elif player-computer == -1 or player- computer == 2: 
				print("玩家胜利!") 
			else:
				print("电脑胜利!") 
			break 
		print("输入有误, 输入0代表石头、1代表剪刀、2代表布")

 # 判断输入是否有误 
 	while True: 
 		rec = input("是否继续游戏?(y/n): ") 
 		if rec in ["y", "n", "Y", "N"]: 
 			break 
 		else:
 			print("输入有误, 请输入y或者n")
# 判断游戏是否要继续玩 
	if rec in ("n", "N"): 
		print("游戏结束!") 
		break
9.5 pass 语句

pass 是一个空操作, 当它被执行时, 什么都不发生。它适合当语法上需要一
条语句但并不需要执行任何代码时用来临时占位

num = int(input("请输入一个数字: ")) 
if num < 100: 
	pass 
else:
	pass
10. 推导式 10.1 列表推导式

结构由一对方括号里面包含一个表达式,后面跟一个 for 子句,然后是零个或多个 for 或 if 子句组成
其结果将是一个新列表,由表达式依据后面的 for 和 if 子句的内容进行求值计算而得出

squares = [] 
for x in range(10): 
	squares.append(x**2) 
squares = [x**2 for x in range(10)]

result = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] 
result = [] 
for x in [1,2,3]: 
	for y in [3,1,4]: 
		if x != y: 
			result.append((x, y))

嵌套的列表推导式
列表推导式中的初始表达式可以是任何表达式,包括另一个列表推导式

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/870562.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号