回头敲循环语句的时候又遇到了问题:var=1whilevar==1:...num=int(input("Enteranumber:")...print("Thenumberyouenteredis:",num)...Enteranumber:4Thenumberyouenteredis:4Enteranumber:7Thenumberyouenteredis:7Inputanumber:7.8Traceback(mostrecentcalllast):File"",line2,inValueError:invalidliteralforint()withbase10:'7.8'第一个输入函数总是返回一个str类型:a=input("input:")input:6type(a)b=input("input:")input:8.9type(b)和Int()函数很神奇,它可以将str类型或数字转换为整数:int(3.4)3int('100')100int('2.3')Traceback(mostrecentcalllast):File"",line1,在ValueError:invalidliteralforint()withbase10:'2.3'int('air')Traceback(最近一次调用last):File"",line1,inValueError:invalidliteralforint()withbase10:'air'int(float('2.3'))2int()函数应该只能将表面字符串直接转换为整数,也就是说int函数是一个包,应该有一个内置函数可以将str转换为ASCII或其他我不知道的东西。int函数只能将要转换的字符串转换成十进制数,这就是空气不能转换成数字的原因:a对应ASCII中的97,97不在0-9之间,大于9的数字为int表示无效。为了验证猜想,可以调用int函数的另一个函数:int(12,16)Traceback(mostrecentcalllast):File"",line1,inTypeError:int()无法用显式baseint('12',16)18转换非字符串只有当输入是字符串时,他才能将十六进制的12转换成十进制的18。因为在int函数中只设置了一个内置函数(一种可以将字符串转换成类似ASCII码的东西,然后再将ASCII码转换回来的函数)。然后开始学习正则表达式和面向对象,正则表达式。。。可能是因为东西太多,没有做笔记,还有一点点面向对象的:classTest:...defppr(self):...print(self)...print(self.__class__)...t=Test()t.ppr()<__main__.Testobjectat0x0000019F9A9EA908>很简单,就是self引用一个实例,ppr方法中的print(self)返回self实例的地址;self.__class__返回的是一个类,可见Test就是那个类。main应该是所有东西都用__class__调用的地方,__main__是双下划线开头双下划线结尾的特殊变量(可以直接访问的变量)。__class__很好理解,它指向类,这里应该是Test类。但是查了文档,这个__main__解释为:顶层脚本运行的环境。顶级代码执行范围的名称。当从标准输入、脚本或交互式提示中读取时,模块的__name__被设置为等于“__main__”。看起来这个__main__的出现似乎和它的运行方式有关。__name__是一个内置变量,计算结果为当前模块的名称。(大懒场)https://stackoverflow.com/que...https://www.geeksforgeeks.org...https://www.journaldev.com/17...前两个说说关系在__main__和__name__之间,第三个链接讲述了main函数。我觉得我今天疯了:classA(object):...deff(self):...return123...a=A()print(A.f())Traceback(最近的calllast):File"",line1,inTypeError:f()missing1requiredpositionalargument:'self'print(a.f())123第一个A.f()我以为是一个类方法,但是它返回给我的是缺少的位置参数self,self在我眼里代表的是一个实例,这不代表我缺少一个实例作为参数,也就是说这个A.f()其实就是A.f(self)这个自我需要一个像?a.f()是一个方法,但是如果前面的假设是正确的,那么它实际上应该是A.f(a)我看到了这个:classTest:...defppr():...print(self)。..t=Test()t.ppr()Traceback(最后一次调用):文件“”,第1行,在TypeError中:ppr()采用0个位置参数,但给出了1个,即When定义ppr,不给self,内部处理时t.ppr()变成Test.ppr(t)。因为没有定义参数,括号里不能给出变量,所以出现这个提示。加上self:classTest:...defppr(self):...print(self)...t=Test()t.ppr()<__main__.Testobjectat0x00000241F67CB848>t.ppr(3)Traceback(最近调用最后):文件“”,第1行,在TypeError中:ppr()采用1个位置参数,但给出了2个。ppr()=Test.ppr(t),实例地址在0x00000241F67CB848,很完美t.ppr(3)=Test.ppr(t,3),多给了一个变量,所以提示只需要一个就给了两个。这是问题的前半部分,我把后半部分留给自己慢慢想,因为我尝试了各种组合,发现如下:classTest:...defppr(self):...print(self)。..t=Test()Test.ppr<函数Test.pprat0x00000241F6792CA8>t.ppr<绑定方法Test.pprof<__main__.Testobjectat0x00000241F67CBA48>>t.ppr()<__main__.Testobjectat0x000002pp41F67Test.BAr8>明明是类方法,但是返回的是函数。也许该方法在python中被视为一个特殊函数(保留问题)?t.ppr和t.ppr()返回相同的地址但是前者返回实例绑定方法的地址,后者加括号返回这个方法的结果,也就是self的地址,两个地址就可以了是一样的,没问题尝试另一个:classA(object):...deff(self):...return123...A.fA.f()Traceback(最近一次调用last):文件“”,第1行,在TypeError中:f()缺少1个必需的位置参数:'self'a=A()a.f>a.f()123a.f返回绑定到实例的方法的地址。a.f()这里返回方法的结果比较直观,没有问题。所以今天有个问题,为什么A.f是函数而不是方法。.