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

Why is my program not printing correctly?

解释如下:

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()

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

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

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

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

尝试这样重写:

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

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

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

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

在您的 return 陈述中,您只是 return 三个数字之一,即您认为最小的那个。但是您的函数应该 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))