Вы хорошо справились с тем, что пытались, но при попытке ввести значения для заполнения списков вы смешали несколько вещей.
Давайте использовать следующий скелет:
number_of_lists = int(input('Enter the number of lists : '))
for list_number in range(1, number_of_lists+1):
current_list = []
number_of_values = int(input('Enter the number of values in the list #%d : ' % list_number))
# Here we enter the values of the current list,
# and that's where things will differ a bit
print('The list is : %s' % str(current_list))
print('The sorted list is: %s' % str(sorted(current_list)))
В зависимости от того, как введены значения в вашем списке, вещи могут немного отличаться:
- Если они вводятся одно за другим (ie. Вы вводите одно, затем нажмите Enter, затем другое, ...)
- Если они введены в одну строку, разделенные пробелами, вам не понадобится
for
l oop, вместо этого вам придется разделить входные данные на пробелы, чтобы заполните свой список.
Случай 1: вы вводите значения одно за другим
В этом случае количество значений, которое вы можете поместить в свой список, равно управляется введенным вами числом, которое используется в for
l oop.
number_of_lists = int(input('Enter the number of lists : '))
for list_number in range(1, number_of_lists+1):
current_list = []
number_of_values = int(input('Enter the number of values in the list #%d : ' % list_number))
for value_number in range(number_of_values):
value = int(input("Enter the value : "))
current_list.append(value)
print('The list is : %s' % str(current_list))
print('The sorted list is: %s' % str(sorted(current_list)))
Случай 2: вы вводите все значения в одной строке, все они разделенный
В этом случае for
l oop не требуется, потому что вы получаете все значения в одно и то же время. e, но это требует от вас проверки правильности количества значений.
Несколько стратегий для этого:
- Вы доверяете пользователю, чтобы ввести правильное количество значений (Я не предлагаю это)
- Вы запрашиваете ввод данных у пользователя, пока он не введет достаточное количество значений
- Вы добавляете значения, если их недостаточно, и удаляете некоторые, если их слишком много
Первая возможность : Вы просто просите пользователя ввести значения:
all_values = input("Enter all the values : ").split()
Вторая возможность : Вы должны использовать while
l oop, в котором вы запрашиваете у пользователя значения до тех пор, пока у вас не будет достаточно:
all_values = []
while len(all_values) != number_of_values:
all_values = input("Enter all the values : ").split()
if len(all_values) != number_of_values:
# Warning message for the user, not required but a good thing
print("You didn't enter enough values, try again.")
Третья возможность : вы добавляете значения, если пользователь ввел недостаточно, и удаляете некоторые, когда он дал вам больше:
all_values = input("Enter all the values : ").split()
if len(all_values) < number_of_values:
# We don't have enough values... What do we do ?
# Let's add 0's at the end, this will not change the final order
while len(all_values) < number_of_values:
all_values.append(0)
elif len(all_values) > number_of_values:
# We have too much values... What do we do ?
# Let's try to remove the last value until we have enough values
while len(all_values) > number_of_values:
all_values.pop()
Как только у вас есть правильное количество значений, вам все равно нужно сделать каждый элемент целым числом:
current_list = [int(item) for item in all_values]
Вы можете, наконец, отсортировать перечислите и напечатайте его, и voilà !.
Чтобы подвести итог этого случая, используйте t Скелет, который я приведу в верхней части, и используйте одну из трех возможностей для ввода значений в списки.
Заключение Так какой же использовать? Ну, вы, наверное, догадались, я предлагаю вам использовать первый случай, его проще использовать и понять.
Хотя, если вы хотите использовать второй случай, вам все равно нужно выбрать способ управления количество значений, которые вы получаете:
- Я настоятельно не рекомендую вам выбирать первую возможность, в компьютерной науке никогда не стоит доверять пользователю данные, которые он предоставляет вам (ну, не вам напрямую, но ваша программа, ...).
- Второй интересен тем, что заставляет пользователя вводить точное количество значений, не меньше и не больше.
- Третий вариант менее ограничен этот момент, потому что он может иметь дело с большим или меньшим количеством значений, чем ожидалось, но это также может быть и плохой момент.
Надеюсь, что это поможет!