想问一下大神我这个代码运行报错,显示n没有定义,len(numbers)不是已经赋值给n了吗
代码:
def bubblesort(numbers):
n = len(numbers)
for i in range(n):
for j in range(0,n-i-1):
if numbers[j]>numbers[j+1]:
numbers[j],numbers[j+1]=numbers[j+1],numbers[j]
numbers = [64, 34, 25, 12, 22, 11, 90]
bubblesort(numbers)
print('排序后:')
for i in range(len(numbers)):
print('%d'%numbers[i],end='')
for循环缩进有问题,应该是跟n = len(numbers)同层级,否则就会出现n未定义。
代码修改如下:
def bubblesort(numbers):
n = len(numbers)
for i in range(n):
for j in range(0,n-i-1):
if numbers[j]>numbers[j+1]:
numbers[j],numbers[j+1]=numbers[j+1],numbers[j]
numbers = [64, 34, 25, 12, 22, 11, 90]
bubblesort(numbers)
print('排序后:')
for i in range(len(numbers)):
print('%d'%numbers[i],end=' ')
上面代码有误,n与for应该同级,代码如下
def bubblesort(numbers):
n = len(numbers)
for i in range(n):
for j in range(0, n - i - 1):
if numbers[j] > numbers[j + 1]:
numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j]
numbers = [64, 34, 25, 12, 22, 11, 90]
bubblesort(numbers)
print('排序后:')
for i in range(len(numbers)):
print('%d' % numbers[i])
测试如下
兄弟,你这代码格式有点问题呀!直接理解的话,就是n是定义在方法内部的一个变量,也就是n是一个局部变量,在方法外部无法直接访问的,你把代码好好的格式化一下,把相应的代码写到方法内部。
额,python 有严格的缩进规则,你的 for 循环代码应该是在 bubbleSort 函数内的。因此
def bubbleSort(numbers):
# ...
for i in range(n):
for j in range(n):
if ...:
do()
else:
do()
def bubble_sort(array):
for i in range(1, len(array)):
for j in range(0, len(array)-i):
if array[j] > array[j+1]:
array[j], array[j+1] = array[j+1], array[j]
return array
if __name__ == '__main__':
array = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(array))