51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师【好消息】企业内训服务上线啦!项目为王,自动化测试提升加速器 !横扫BAT,Python全栈测试开发技能大全
【115期】:如何从测试工程师成长为测试开发? 参与调查问卷 缔造行业趋势 月薪15K+的测试开发必备技能? 【活动】为视频UP主打CALL,互动领福利!
查看: 344|回复: 4

[Python测试开发全栈班] 请教老师关于顺序排序定义类方法重构问题

[复制链接]

该用户从未签到

发表于 2019-5-13 11:50:57 | 显示全部楼层 |阅读模式
重新定义了顺序查找的类,一直报错。请老师帮忙指点,感谢。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测试开发全栈核心课程 互联网测试工程师必修课

回复

使用道具 举报

该用户从未签到

发表于 2019-5-13 11:53:47 | 显示全部楼层
程序看了一下,调用类方法的时候,要用对象名进行调用就好了。

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

下面调用类方法时,需要写成c.linear_search(li,6)
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2019-5-13 14:32:17 | 显示全部楼层
商老师,我修改了,但是还是不排序,或者排序的顺序有问题,有时候还不是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:37 | 显示全部楼层
已经发现问题所在了。li[1 + 1]=tem  把1当成i写进去了..感谢老师
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2019-5-13 14:33:48 | 显示全部楼层
你说的很对,就是把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)
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /2 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2020-10-28 21:34 , Processed in 0.059060 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2020 Comsenz Inc.

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