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

时间:2015-01-04 16:57:20

标签: python sorting

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

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]

3 个答案:

答案 0 :(得分:7)

Python使用冒号来启动块,每个块用于,if,while等需要a:最后

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已经有了sort函数。如果您的任务不是编写排序函数,那么只需通过执行

即可
a.sort()

从用户那里读完所有内容后。

答案 1 :(得分:2)

您在iffor的每一行末尾都缺少冒号:

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

等等。

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

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]

答案 2 :(得分:0)

您的代码中存在很多错误。首先是失踪的冒号,

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]