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

fro*_*oty -1 python sorting

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

File "bubble.py", line 6
    for i in range(0,n)
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何使用该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]
Run Code Online (Sandbox Code Playgroud)

Rya*_*ing 7

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

for i in range(0,n):
    for j in range(0,n-1):
        if a[j]>a[j+1]:
Run Code Online (Sandbox Code Playgroud)

其他问题:

n = raw_input()
Run Code Online (Sandbox Code Playgroud)

n将是一个str,你需要将它转换为如下所示的int:

n = int(raw_input())
Run Code Online (Sandbox Code Playgroud)

使用range,0是隐式启动,使用range(n)与...相同range(0, n)


在你的第一个循环中

temp = raw_input()
a[i].append(temp)
Run Code Online (Sandbox Code Playgroud)

但是它a是一个没有任何内容的列表,你就像列表一样使用它.相反,我相信你只是想附加到a,并且你必须再次将值转换为数字

temp = float(raw_input())
a.append(temp)
Run Code Online (Sandbox Code Playgroud)

这也可能只是

a.append(float(raw_input()))
Run Code Online (Sandbox Code Playgroud)

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

n = int(raw_input("Enter n"))
Run Code Online (Sandbox Code Playgroud)

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

for e in a:
    print e
Run Code Online (Sandbox Code Playgroud)

你可能也想print a直接.


最后,值得一提的是python中已经有了sort函数.如果您的任务不是编写排序函数,那么只需通过执行即可

a.sort()
Run Code Online (Sandbox Code Playgroud)

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