为什么我的程序打印不正确



解释如下:

def displaySortedNumbers(num1, num2, num3):
smallest = num1
if num2 < smallest:
smallest = num2
if num3 < smallest:
smallest = num3
return smallest
def main():
num1, num2, num3 = eval(input("Enter three numbers seperated by commas:"))
print("The numbers are,",displaySortedNumbers(num1, num2, num3))
main()

输入三个数字后,最小的数字会打印出来,但其余数字不会跟在后面。我需要把数字从小到大打印出来。我不确定我做错了什么。

您的函数只返回所提供的三个函数中最小的一个,如果适用,您可以考虑使用列表并对其进行排序。

def displaySortedNumbers(num1, num2, num3):
s = ""
for c in sorted([num1, num2, num3]):
s += " " + str(c)
return s

sorted()函数接受一个可迭代的参数并返回按键排序的参数,但在这种情况下,如果只是按递增顺序排序,则不需要输入键。

在您的return语句中只有"最小",而没有其他变量。

您可以将值存储在列表中,对其进行排序,然后返回该列表,就像这个一样

def displaySortedNumbers(num1, num2, num3):
list = [num1, num2, num3]
list.sort()
return list

在return语句中,您只返回三个数字中的一个,即您认为最小的一个。但是,您的函数应该返回所有排序的三个数字。我猜你不能使用内置的sorted()函数,所以你需要手动编程排序。通过将函数更改为以下内容,您可以对3个数字进行简单的气泡排序:

def displaySortedNumbers(num1, num2, num3):
if num2 < num1:
num1, num2 = num2, num1
if num3 < num2:
num2, num3 = num3, num2
if num2 < num1:
num1, num2 = num2, num1
return num1, num2, num3

这将打印所有三个正确排序的数字。

如果你可以使用内置功能,你可以简单地说:

def displaySortedNumbers(num1, num2, num3):
return sorted((num1, num2, num3))

试着这样重写:

if smallest > num2:
smallest = num2
elif smallest > num3:
smallest = num3

最新更新