Python#389
函数main()接收一个包含若干自然数的列表,要求对其中的自然数升序排序,然后返回紧凑形式的字符串。
例如,main([5,6,7,8,9,14,13,12,11,23,29,30,39])返回'5-9,11-14,23,29-30,39',
也就是把连续的自然数组合到一起使用减号连接,单个不连续的自然数独立显示,每组之间使用半角逗号分隔。
考点:选择结构与循环结构,排序
我咋感觉要用到排序算法啊……
排序的话有一个sorted()函数排序,但是这个是对字典用的.
def main(numbers):
#return numbers
ans=[]
list.sort(numbers)
for i in numbers:
if numbers[i+1]-numbers[i]==1:
ans.append(i)
return min(ans)+'-'+max(ans)
else:
return i
'''
答题错误!您的代码执行结果为:
Traceback (most recent call last):
File xxx.py, line 13, in <module>
print(main([5, 6, 7, 8, 9, 14, 13, 12, 11, 23, 29, 30, 39]))
File xxx.py, line 8, in main
return min(ans)+'-'+max(ans)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
'''