51Testing软件测试论坛

标题: 请教老师关于顺序排序定义类方法重构问题 [打印本页]

作者: 雪中寻    时间: 2019-5-13 11:50
标题: 请教老师关于顺序排序定义类方法重构问题
重新定义了顺序查找的类,一直报错。请老师帮忙指点,感谢。class SC:    def linear_search(self,data_set,value):        for i in range(len(data_set)):            if data_set == value:                return i        returnli=[6,34,2,0,5,475]c=SC()result=SC.linear_search(li,6)print(result)
运行结果:
Traceback (most recent call last):
  File "D:/Users/Administrator.3010-PC/PycharmProjects/spider/spider/kuozhan.py", line 37, in <module>
    result=SC.linear_search(li,6)
TypeError: linear_search() missing 1 required positional argument: 'value'
Process finished with exit code 1


在学课程
Python测试开发全栈核心课程 互联网测试工程师必修课
http://www.atstudy.com/course/1593


作者: 学掌门网校    时间: 2019-5-13 11:53
程序看了一下,调用类方法的时候,要用对象名进行调用就好了。

c=SC()
result=SC.linear_search(li,6)
c是对象,sc是类

下面调用类方法时,需要写成c.linear_search(li,6)
作者: 雪中寻    时间: 2019-5-13 14:32
商老师,我修改了,但是还是不排序,或者排序的顺序有问题,有时候还不是list组里面的数

class bubble:
    def bubbl(self, li):
        b = len(li)
        print(b)
        for j in range(1, b):
            for i in range(0, b - 1):
                if (li[i] > li[i + 1]):
                    tem = li[i]
                    li[i] = li[i + 1]
                    li[1 + 1]=tem
            print("第", j, "次排序:", li)
        print(li)

if __name__== '__main__':
    s=bubble()
    li=[3,7,8,0]
    s.bubbl(li)
运行结果:

D:\Users\Administrator.3010-PC\PycharmProjects\untitled\spider\Scripts\python.exe D:/Users/Administrator.3010-PC/PycharmProjects/spider/spider/kuozhan2.py
4
第 1 次排序: [3, 7, 8, 0]
第 2 次排序: [3, 7, 8, 0]
第 3 次排序: [3, 7, 8, 0]
[3, 7, 8, 0]
作者: 雪中寻    时间: 2019-5-13 14:32
已经发现问题所在了。li[1 + 1]=tem  把1当成i写进去了..感谢老师
作者: 学掌门网校    时间: 2019-5-13 14:33
你说的很对,就是把i写成1 了,我也是写了一些调试语句,才发现这个小bug,你可以参考一下,如何加入调试的print语句。这样以后就知道怎么去定位问题了呵。

class bubble:
    def bubbl(self, li):
        b = len(li)
        print(b)
        for j in range(1, b):
            for i in range(0, b - 1):
                if (li[i] > li[i + 1]):
                    print("i",li[i],"   i+1",li[i+1])
                    tem = li[i]
                    print("tem",tem)
                    li[i] = li[i + 1]
                    print("i", li[i])
                    li[1 + 1]=tem
                    print("i+1",li[i+1])
                    print("houi", li[i], "   houi+1", li[i + 1])
            print("第", j, "次排序:", li)
        print(li)




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2