#!/usr/bin/python3
class BubbleSort:
def __init__(self):
self.x=[]
self.limit=0
def getElements(self):
self.limit=int(input("Enter the limit:"))
print("Enter {} number".format(self.limit))
for i in range(1,self.limit+1):
self.x.append(int(input()))
def sort(self):
for i in range(0,self.limit):
for j in range(0,(self.limit-1)-i):
if self.x[j+1] < self.x[j]:
temp1=self.x[j+1]
temp2=self.x[j]
del self.x[j]
del self.x[j+1]
self.x.insert(j+1,temp2)
self.x.insert(j,temp1)
print(self.x)
print("Sorted list is")
for i in self.x:
print(i)
def main():
b=BubbleSort()
b.getElements()
b.sort()
if __name__=="__main__":main()
这是一个简单的冒泡排序程序。
问题1:如果我运行该程序,则会输入两个相同的数字,例如,当我输入say - &gt; 3 6 5 1 2
输出 - &gt; 1 2 2 5 6
3被2替换。
2:为什么我在python中看到很多'self'作为函数的参数?那么self.x = []和self.limit = 0是做什么的? 作为一个概念我是方法的超级新手,我尝试阅读,他们没有帮助。
3.在函数getElements中,self.limit是什么?为什么甚至需要?我们可以使用像'x'这样的普通变量
例如:x= int(input("enter the limit:"))
print("enter {} number".format(x))
3.解释self.x.append(int(input())))
不附加(int(something))会在列表末尾添加某些内容的值吗?
for(i=1;i<=6;i++)
假设在范围函数中python中没有考虑最左边的数字。正确?主要解释每个功能中的'self'参数。
答案 0 :(得分:1)
删除x [j]时,x [j + 1]变为x [j]。替换:
del self.x[j]
del self.x[j+1]
使用:
del self.x[j+1]
del self.x[j]
然而,就像@IanAuld所说的那样,在迭代它时删除数组元素是一种糟糕的编程习惯。相反,尝试创建一个新数组并将元素复制到新数组,在此过程中保持原始数组不变。之后,如果需要,可以用新数组替换旧数组。
为了回答你的第二个问题,self引用了这个类,你可以从你的函数所在的同一个类中访问其他变量。例如,如果你有:
#!/usr/bin/python3
class Foo:
bar = 3
def getValueOfBar(self):
return self.bar
x = Foo()
print( x.getValueOfBar() )
self指父类,因此您可以从函数范围内的类中检索变量。