鱼C论坛

 找回密码
 立即注册
查看: 2840|回复: 15

[见证历程] 开始征途

[复制链接]
发表于 2019-8-8 07:52:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一元二次方程的求解。排除非二次方可能
import math
#求解方程ax^2+bx+c=0
'''常规二次一元方程的解为
x1=(b+sqrt(b^2-4ac))/2a
x2=(b-sqrt(b^2-4ac))/2a
'''
def trans_int(num):
    try :
        num=int(num)
       # x=1/num
        return num
    except (ValueError,ZeroDivisionError):  #如果加上x=1/num,排除系数为0的可能
        print(num+'是非法参数,非数字')
        num=input('请重新输入合法数字:')
        return trans_int(num)
    #return num
a = input('输入二次项系数a:')
a = trans_int(a)
if a==0:
    print('非二次方程')
    exit()
b = input('输入一次项系数b:')
b = trans_int(b)
c = input('输入常数项c:')
c = trans_int(c)
#print('二次项系数是:'+str(a),'一次项系数是:'+str(b),'常数项是:'+str(c))
'''====================================================================================
#使用判断方法
temp=b**2-4*a*c
m=-b/2*a
if temp == 0:
    print('方程有两个相同的解:'+str(m))
else:
    if temp >= 0:
        temp=math.sqrt(temp)
        temp=temp/2*a
        x1=m+temp
        x2=m-temp
    else:
        temp=abs(temp)
        temp=math.sqrt(temp)
        temp=temp/a*2
        x1=complex(m,temp)
        x2=complex(m,-temp)
    #temp=math.sqrt(temp)
    print('方程的第一个解:'+str(x1),'方程的第二个解:'+str(x2))
======================================================================================='''
#使用try方式
m=-b/2*a
try:
    temp=b**2-4*a*c
    1/temp
    temp=math.sqrt(temp)
    temp=temp/2*a
    x1=m+temp
    x2=m-temp
    print('方程的第一个解:'+str(x1),'方程的第二个解:'+str(x2))
except ZeroDivisionError:
    print('方程有两个相同的解:'+str(m))
except ValueError:
    temp=abs(temp)
    temp=math.sqrt(temp)
    temp=temp/a*2
    x1=complex(m,temp)
    x2=complex(m,-temp)
    print('方程的第一个解:'+str(x1),'方程的第二个解:'+str(x2))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-8 08:09:18 | 显示全部楼层
原谅我是小学生,看不懂
输入二次项系数a:5
输入一次项系数b:6
输入常数项c:7
方程的第一个解:(-15+4.079215610874227j) 方程的第二个解:(-15-4.079215610874227j)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-8 08:21:02 | 显示全部楼层
刚刚想到,如果将int改为float,那么输入系数就可以是小数了
def trans_int(num):
    try :
        num=float(num)
       # x=1/num
        return num
    except (ValueError,ZeroDivisionError):  #如果加上x=1/num,排除系数为0的可能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-3 08:19:22 | 显示全部楼层
#import time
import re   #导入正则
def newreserve(num):        #数字反转方法
    listnum=[]
    flag=''     #默认为无符号
    strnum=str(num)
    #print(strnum)
    for index in range(len(strnum)):
        listnum.append(strnum[index])  
    if num<0:       #有符号,需要考虑符号后变换
        flag=listnum.pop(0)
    listnum.reverse()       #列表反向
    result=flag
    for index in range(len(listnum)):
        result+=listnum[index]
    if int(result)<(-2**31) or int(result)>(2**31-1):
        return 0
    else :
        return int(result)
#print(newreserve(-2012390011284))
#print(newreserve(321))
'''
1、写一个矩形类,默认有宽和高两个属性
2、如果为一个叫square的属性赋值,那么说明这是一个正方形,值就是正方形的边长,此时宽和高都应该等于边长
'''
class rectangle:
    def __init__(self,width,height):
        self.width = width
        self.height = height
    def __setattr__(self,name,value):       #设置新属性
        if name == 'square':         #如果新属性名称是’square'
            self.width = value
            self.height = value
        else:
            #self.name = value       #这样存在赋值,就会调用__setattr__(self,name,value),自己调用自己进入死循环
            super().__setattr__(name,value)     #方式一:调用基类赋值,推荐使用此方式
            self.__dict__[name] = value         #方式二
    def getarea(self):
        return self.width * self.height
#给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。
      
def fmatch(str1):       #在一个字符串中查找目标字符串
    str2=str1       #保留原字符串
    #re.match(pattern,string) 从string的开始匹配pattern,如果开始不能匹配返回none
    #re.search(pattern,string)从整个string中匹配pattern,直到匹配上
    while re.findall('\(\)',str2) !=[]:      #判断str2中是否存在'()'
        str2=str2.replace('()','X')            #将‘()'替换为’X‘
    list1=re.findall('X+',str2)
    list1.sort()
    return len(list1[-1])
print(fmatch('(())()()((()))))(()()()))(()'))
'''
先定义一个温度的类,然后定义两个描述符类用于描述摄氏度和华氏度两个属性
要求两个属性会自动进行转换,也就是说你可以给摄氏度这个属性赋值,然后打印的华氏度属性是自动转换后的结果
'''
class Stemp:
    def __init__(self,value=25):
        self.value=float(value)
    def __set__(self,instance,value):
        self.instance=float(value)
    def __get__(self,instance,owner):
        return self.instance
class Ftemp:
    def __set__(self,instance,value):
        instance.st=(float(value)-32)/1.8
    def __get__(self,instance,owner):
        return instance.st * 1.8 +32
class Temperature:
    def __init__(self,value,M):
        if M=='C':
            self.st=value
        else:
            self.ft=value
    st=Stemp()
    ft=Ftemp()
   

劳动节过完了。继续。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-4 01:42:13 | 显示全部楼层
这是一个魔法方法,可以统计每一个列表元素被访问次数
class Mylist():
    def __init__(self,*args):
        self.values = [x for x in args]
        self.count = {}.fromkeys(range(len(self.values)),0)  #将列表index为字典key并赋值0
    def __getitem__(self,item):     #item为列表项的index
        self.count[item] +=1
        return self.values[item]
    def __setitem__(self,item,value):
        self.values[item]=value
    def __delitem__(self,item):
        #length=len(self.values)     #原列表长度
        self.values.pop(item)
        for index in range(item,len(self.values)):  #统计对象刷新
            self.count[index]=self.count[index+1]
        self.count.pop(index+1)     #删除对已删除对象的统计
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-4 06:10:01 | 显示全部楼层
本帖最后由 lucky邪神 于 2019-9-19 12:14 编辑

关于正则的,用 () 来划定原字符串的组,{} 中表示数字的个数,r 即后面的字符串为原始字符串,防止计算机将 \ 理解为转义字符,2,3,1 为输入的字符串三段的序号。
s = '2017-11-27'
import re
print(re.sub('(\d{4})-(\d{2})-(\d{2})',r'\2/\3/\1', s))

IP地址的查找,列举:
二进制:11111111111111111111111111111111
      分为四部分:11111111.11111111.11111111.11111111
      转化:2^7+2^6+2^5+2^4+2^3+2^2+2^1+2^0=255
      转为十进制范围:0~255.0~255.0~255.0~255
      这就是IP地址的范围。
      根据这个生成IP的规则和范围,我们可以用正则表达式来匹配出IP地址,但怎么匹配呢?各人有各人的方法,这里我讲解一下我的思路。
      根据IP地址的字符串规律,我把匹配IP地址的表达式分为两部分来考虑。
      第一部分:匹配3个0~255.(注意后面的一个点)
      第二部分:匹配最后的数字0~255
      也就是说,先匹配出 0~255.(注意后面的一个点) 这个字符串,然后重复匹配3次,然后再匹配最后的数字部分0~255。这就是我匹配IP地址的思路。
       首先,我要提一下,正则是没有办法做数字运算的,所以,我们无法用数字运算的方式筛选出IP的数字范围。既然没法用数字运算的方式筛选出IP的数字范围,那么我们应该用什么其他方式来筛选这个数字范围呢?我的思路是分组讨论,然后再把这些分组合并起来组成IP的数字范围。
       ①、假设IP的数字是百位数,那么根据IP的数字范围,我们可以得出下面几种情况。假设第一个数字为1,那么这个数字的范围就为1[0-9][0-9]。这个应该不难理解,就不解释。
      ②、假设第一个数字为2,那么根据IP数字的范围规则,这里又要分为两种情况,为什么?你想想,最大数字是255,当十位数为5时,个位数最大只能为5是吧?而当十位数为0到4时,个位数可以是任意数字对吧?
      所以,这里的两种情况分别为:
           A、2[0-4][0-9]
           B、25[0-5]
       ③、分析完了百位数的情况,接下来就是十位数的情况了,假如是十位数,那么十位数的前面第一个数不能为零是吧?
所以十位数的情况可以是:[1-9][0-9]
       ④、剩下的就是个位数的情况了,个位数的情况,大家应该很容易得出结论,就是:[0-9]。
       四种情况分析下来,我们得出了IP数字的范围分组为:
        1[0-9][0-9]
        2[0-4][0-9]
        25[0-5]
        [1-9][0-9]
        [0-9]
       怎么把上面的分组用正则表达式表示出来呢?很简单,用正则的或符号|和分组符号()就可以了,所以上面的分组正则表达式为:
(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9])

写到这里,数字的匹配范围正则表达式已经写好了,那么根据我前面的思路: 第一部分:匹配3个0~255.(注意后面的一个点)
         第二部分:匹配最后的数字0~255
        我们来匹配IP地址的第一部分,正则表达式如下: 
(1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9]\.)
 我在每个数字的后面加了一个点就是匹配出0~255.(注意后面的一个点)
         那么怎么重复匹配三次呢?很简单,我们只要把这五个分组当成整体,再重复匹配三次就行了,正则表达式如下: 
((1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9])\.)){3}
第一部分已经匹配出来了,接下来就是拼接上第二部分的数字了,数字部分上面已经写得很清楚了,就不再解释了,下面是完整的正则表达式:
((1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9]\.)){3}((1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9]))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-4 07:24:47 | 显示全部楼层
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-5 03:34:39 | 显示全部楼层
本帖最后由 lucky邪神 于 2019-9-5 13:19 编辑

关于迭代器:iter()和next()
把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__()
__iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。
__next__() 方法会返回下一个迭代器对象。
例如一个数按步进增加:
class hk:
    def __init__(self,a,b):
        self.num=a
        self.step=b
    def __iter__(self):
        return self
    def __next__(self):
        self.num=self.num+self.step
        print(self.num)
        return self.num

关于yield,在 Python 中,使用了 yield 的函数被称为生成器(generator),跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作.
def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        print('if比较的counter是:%d'%counter)
        if (counter > n):            
            return
        yield a
        yield b
       
        print('yield后的a是:%d'%a)
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end="*_* ")
    except StopIteration:
        break
运行结果如下:
if比较的counter是:0
0*_* 1*_* yield后的a是:0
if比较的counter是:1
1*_* 1*_* yield后的a是:1
if比较的counter是:2
1*_* 2*_* yield后的a是:1
if比较的counter是:3
2*_* 3*_* yield后的a是:2
if比较的counter是:4
3*_* 5*_* yield后的a是:3
if比较的counter是:5
5*_* 8*_* yield后的a是:5
if比较的counter是:6
8*_* 13*_* yield后的a是:8
if比较的counter是:7
13*_* 21*_* yield后的a是:13
if比较的counter是:8
21*_* 34*_* yield后的a是:21
if比较的counter是:9
34*_* 55*_* yield后的a是:34
if比较的counter是:10
55*_* 89*_* yield后的a是:55
if比较的counter是:11

结果说明:在print (next(f), end="*_* ")执行时,首先调用了next(f),接着是f = fibonacci(10)
fibonacci(10)运行:第一个输出是print('if比较的counter是:%d'%counter),接着遇到yied a,即return a。 print (next(f), end="*_* ")输出此时a的值0并以*_*结尾
while True判断再次执行print (next(f), end="*_* "):调用next(f),根据上一次循环 fibonacci(10)运行到yield a,从此处继续执行接着就是yield b,即return b。 print (next(f), end="*_* ")输出此时b的值1并以*_*结尾

第三次while True:执行print (next(f), end="*_* "):调用next(f),根据上一次循环 fibonacci(10)运行到yield b,从此处继续执行接着就是一个输出print('yield后的a是:%d'%a),继续执行,a,b=1,1,counter=1
                         fibonacci(10)中的while True继续执行,一个输出print('if比较的counter是:%d'%counter),继续遇到yied a,即return a。 print (next(f), end="*_* ")输出此时a的值1并以*_*                                结尾
第四次while True:重复第二次那样的操作
第五次while True:类似第三次那样的操作
直至fibonacci(10)中if(counter>10)成立。停止


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-19 11:41:30 | 显示全部楼层
import urllib.request
import urllib.parse
import json
import easygui
import tkinter
title='YD Translate Dict'
def gettext():
    text1=win1.get('0.0','end')
    return text1
def clearbox():
    win1.delete('0.0','end')
    win2.delete('0.0','end')
def translation():
    url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    headers={}
    headers['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64)\
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 \
    Safari/537.36 Edge/17.17134'
    
    data={}
    data['doctype']='json'
    data['from']='AUTO'
    data['i']=gettext().strip()
    data['keyfrom']='fanyi.web'
    
    if data['i'].strip()=='':       #如果没有输入时
        win2.delete('0.0','end')
    else:
       #resdata=urllib.parse.urlencode(data).encode('utf-8')
        resdata=urllib.parse.urlencode(data)
        resdata=resdata.encode('utf-8')
       #打开页面,发送请求
        response=urllib.request.urlopen(url=url,data=resdata)
        '''
        res=urllib.request.request(url,resdata,headers)
        res.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134')
        response=urllib.request.urlopen(res)
        '''
       #获取响应,提取翻译的结果
        htlm=response.read().decode('utf-8')
        htlm=json.loads(htlm)['translateResult']
        
        htlm=htlm[0]
        length = len(htlm)
        win2.delete('0.0','end')
        for index in range(length):
            result=htlm[index]
            
            result=result['tgt']
            
            #win2.delete('0.0','end')
            win2.insert('end',result)
ydw=tkinter.Tk(className=title)
#输入对话框
win1=tkinter.Text(ydw,bg='green',cursor='arrow',width=100,height=10)
win1.grid(padx=10)
#翻译按钮
button=tkinter.Button(ydw,text='翻译',command=translation)
button.grid(row=5,column=0)
button2=tkinter.Button(ydw,text='清空',command=clearbox)
button2.grid(row=5,column=1)
#翻译输出对话框
win2=tkinter.Text(ydw,width=100,height=10)
win2.grid(row=7)
这几天好疲惫啊,不想动,希望快点回国
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-25 01:44:52 | 显示全部楼层
这两天只是做做每日一题,明天就可以回国了。想弄清楚怎么装载需要装的东西或是库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-28 22:09:15 | 显示全部楼层
刚回国,这两天调整下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-18 22:06:09 | 显示全部楼层
今天武汉军运会开幕,第一次收到一个最佳答案,大受鼓舞。努力继续加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-4 21:36:17 | 显示全部楼层
好久没有上了,最近考虑买车,挑懵了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-12 21:17:19 | 显示全部楼层
本帖最后由 lucky邪神 于 2019-11-12 22:10 编辑

今天在电脑上安装了GPIB的驱动,开始尝试学习控制测试设备,目前了解的第三方模块是pyvisa

>>> import pyvisa
>>> tm=pyvisa.ResourceManager()
>>> tm1=tm.list_resources()
>>> tm1
()
>>> tm.open_resource()

打开本地路径/文件

>>> import tkinter
>>> file=tkinter.filedialog.askopenfile()
>>> dir(tkinter.filedialog)
['ACTIVE', 'ALL', 'ANCHOR', 'ARC', 'BASELINE', 'BEVEL', 'BOTH', 'BOTTOM', 'BROWSE', 'BUTT', 'BaseWidget', 'BitmapImage', 'BooleanVar', 'Button', 'CASCADE', 'CENTER', 'CHAR', 'CHECKBUTTON', 'CHORD', 'COMMAND', 'CURRENT', 'CallWrapper', 'Canvas', 'Checkbutton', 'DISABLED', 'DOTBOX', 'Dialog', 'Directory', 'DoubleVar', 'E', 'END', 'EW', 'EXCEPTION', 'EXTENDED', 'Entry', 'Event', 'EventType', 'FALSE', 'FIRST', 'FLAT', 'FileDialog', 'Frame', 'GROOVE', 'Grid', 'HIDDEN', 'HORIZONTAL', 'INSERT', 'INSIDE', 'Image', 'IntVar', 'LAST', 'LEFT', 'Label', 'LabelFrame', 'Listbox', 'LoadFileDialog', 'MITER', 'MOVETO', 'MULTIPLE', 'Menu', 'Menubutton', 'Message', 'Misc', 'N', 'NE', 'NO', 'NONE', 'NORMAL', 'NS', 'NSEW', 'NUMERIC', 'NW', 'NoDefaultRoot', 'OFF', 'ON', 'OUTSIDE', 'Open', 'OptionMenu', 'PAGES', 'PIESLICE', 'PROJECTING', 'Pack', 'PanedWindow', 'PhotoImage', 'Place', 'RADIOBUTTON', 'RAISED', 'READABLE', 'RIDGE', 'RIGHT', 'ROUND', 'Radiobutton', 'S', 'SCROLL', 'SE', 'SEL', 'SEL_FIRST', 'SEL_LAST', 'SEPARATOR', 'SINGLE', 'SOLID', 'SUNKEN', 'SW', 'SaveAs', 'SaveFileDialog', 'Scale', 'Scrollbar', 'Spinbox', 'StringVar', 'TOP', 'TRUE', 'Tcl', 'TclError', 'TclVersion', 'Text', 'Tk', 'TkVersion', 'Toplevel', 'UNDERLINE', 'UNITS', 'VERTICAL', 'Variable', 'W', 'WORD', 'WRITABLE', 'Widget', 'Wm', 'X', 'XView', 'Y', 'YES', 'YView', '_Dialog', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'askdirectory', 'askopenfile', 'askopenfilename', 'askopenfilenames', 'askopenfiles', 'asksaveasfile', 'asksaveasfilename', 'commondialog', 'constants', 'dialogstates', 'enum', 'fnmatch', 'getboolean', 'getdouble', 'getint', 'image_names', 'image_types', 'mainloop', 'os', 're', 'sys', 'test', 'wantobjects']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-13 21:17:28 | 显示全部楼层
今天使用32位电脑写的python程序,其中一个关于I2C的一个dll文件,导入的时候,老是说找不到,明天继续想办法,同事说是因为电脑64位的原因。搞定了,再来记录
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-1 22:15:46 | 显示全部楼层
今天初步实现了自己的一个想法,这是私人电脑上一部分
import tkinter as tk
from tkinter import filedialog
import os

def filedirselect():
    filedir = filedialog.askdirectory()
    
    #filenamelist=[filename for filename in os.listdir(filedir) if filename.endswith(".txt")]
    filenamelist= os.listdir(filedir)
    print(filenamelist)
    
    if filedir != "":
        entry1.delete(0,'end')
    entry1.insert(0,filedir)
    pass


root  = tk.Tk(className='Code TXT trans')
root.geometry("400x250+200+150")

label1= tk.Label(root,text='选择文件位置')
label1.grid(row=0,rowspan=1,column=1,padx=20,pady=15)

entry1=tk.Entry(root)
entry1.grid(row=0,column=2,columnspan=3,padx=20,pady=15)

button1=tk.Button(root,text='浏览',command=filedirselect)
button1.grid(row=0,column=5,columnspan=1,padx=20,pady=15)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 04:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表