51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1288|回复: 4
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 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测试开发全栈核心课程 互联网测试工程师必修课

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2019-5-13 11:53:47 | 只看该作者
程序看了一下,调用类方法的时候,要用对象名进行调用就好了。

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

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

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 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]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2019-5-13 14:32:37 | 只看该作者
已经发现问题所在了。li[1 + 1]=tem  把1当成i写进去了..感谢老师
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 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)
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-4-25 22:38 , Processed in 0.066986 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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