我为冒泡排序编写了这段代码,它显示了这个错误:
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]
答案 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)
您在if
和for
的每一行末尾都缺少冒号:
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]