代码审查我的错误冒泡排序代码

Code review my buggy bubble sort code

我为冒泡排序写了这段代码,它显示了这个错误:

File "bubble.py", line 6
    for i in range(0,n)

谁能告诉我如何使用 range 函数,以便我可以从用户那里获取输入 n 并遍历它?

print "Enter n"
n = raw_input()
print "enter elements"
a = []
for i in range(0,n)
    temp = raw_input()
    a[i].append(temp)

for i in range(0,n)
    for j in range(0,n-1)
        if a[j]>a[j+1]
            temp = a[j]
            a[j] = a[j+1]
            a[j+1] = temp


for i in range(0,n)
    print a[i]

Python 使用冒号开始块,每个 for、if、while 等都需要一个 : 在末尾

for i in range(0,n):
    for j in range(0,n-1):
        if a[j]>a[j+1]:

其他问题:

n = raw_input()

n 将是一个 str,您需要像这样将其转换为一个 int:

n = int(raw_input())

range,0是隐式开始,用range(n)range(0, n)一样


在你的第一个循环中你有

temp = raw_input()
a[i].append(temp)

但是 a 是一个什么都没有的列表,您像使用列表的列表一样使用它。相反,我相信您只是想附加到 a,并且您必须再次将该值转换为数字

temp = float(raw_input())
a.append(temp)

也可以是

a.append(float(raw_input()))

raw_input 函数接受一个字符串作为用户提示打印。您可以将前两行缩短为

n = int(raw_input("Enter n"))

你的最后一个 for 循环是非常 C 风格的。您应该更喜欢 pythonic "for-each" 循环。不要迭代索引,迭代元素,将最后一个循环更改为

for e in a:
    print e

您可能还想直接 print a


最后,值得一提的是 python 中已经有一个排序功能。如果您的任务不是编写排序函数,那么只需使用它即可

a.sort()

阅读用户的所有内容后。

您在 iffor:

的每行末尾缺少冒号
for j in range(0,n-1):
#                    ↑ THIS
    if a[j]>a[j+1]:
    #             ↑ THIS

等等。

另外,raw_input() returns 一个字符串。您需要将其转换为整数:

n = int(raw_input())

您使用 raw_input() 的其他地方也是如此 - 情况有点糟糕,因为程序不会失败,但您的代码会安静地对元素进行排序 lexicographically 而不是比数字。

以下不是错误,但有助于使您的代码更加地道:

  • range(0,n)可以写成range(n);
  • 交换a[j]a[j+1]可以写成a[j], a[j+1] = a[j+1], a[j].

你的代码有很多错误。首先缺少冒号,

for i in range(0,n): 
for j in range(0,n-1):
if a[j]>a[j+1]:

接下来你需要投raw_input() as int(raw_input())

又是行a[i].append() should be changed to a.append()

修改后的代码

print "Enter n"
n = int(raw_input())
print "enter elements"
a = []
for i in range(0,n):
    temp = int(raw_input())
    a.append(temp)

for i in range(0,n):
    for j in range(0,n-1):
        if a[j]>a[j+1]:
            temp = a[j]
            a[j] = a[j+1]
            a[j+1] = temp


for i in range(0,n):
    print a[i]