Если в конце вашей программы вы добавите:
print("Your input, sorted:", sorted(lst))
, вы должны увидеть lst
в том порядке, в котором Python считает, что сортируется.
You ' Вы заметите, что это не всегда будет соответствовать тому, что вы считаете отсортированным.
Это потому, что вы считаете lst
отсортированным, когда элементы расположены в числовом порядке. Тем не менее, элементы не являются числами; когда вы добавляете их к lst
, они являются строками, и Python обрабатывает их как таковые, даже если вы вызываете min()
, max()
и sorted()
для них.
Способ Чтобы решить вашу проблему, добавьте int
s в список lst
, изменив строку с:
lst.append(x)
на:
lst.append(int(x))
Внесите эти изменения и увидите если это поможет.
PS: Вместо того, чтобы вызывать str()
для всех этих целочисленных значений в ваших операторах печати, например:
print("The total of all the numbers your entered is: " + str(total))
print("You entered " + str(count) + " numbers.")
print("The average of all your numbers is: " + str(avg))
print("The smallest number was: " + str(min(lst)))
print("The largest number was: " + str(max(lst)))
, вы можете воспользоваться тем, что Python * print()
функция будет печатать каждый аргумент отдельно (по умолчанию разделенный пробелом). Так что используйте это вместо этого, что проще и немного проще для чтения:
print("The total of all the numbers your entered is:", total)
print("You entered", count, "numbers.")
print("The average of all your numbers is:", avg)
print("The smallest number was:", min(lst))
print("The largest number was:", max(lst))
(И если вы хотите, вы можете использовать f-strings
. Но вы можете посмотреть это самостоятельно.)