Привет, я пишу программу, в которой пользователь вводит числа для двух разных списков, а программа печатает объединенные списки и сортирует числа в обратном порядке (самый высокий - самый низкий).
Мне удалось написать программу, но мне нужен способ изменить ее, чтобы пользователь вводил список в одну строку, а не в несколько строк, и тогда мой конечный результат не печатается (самый высокий - самый низкий), в настоящее время он печатает только (низкий) высоко)
см. ниже мой код
a=[]
c=[]
n1=int(input("Enter number of elements:"))
for i in range(1,n1+1):
b=int(input("Enter element:"))
a.append(b)
n2=int(input("Enter number of elements:"))
for i in range(1,n2+1):
d=int(input("Enter element:"))
c.append(d)
new=a+c
new.sort()
print("Sorted list is:",new)
Выход
Enter number of elements:4
Enter element:1
Enter element:3
Enter element:3
Enter element:6
Enter number of elements:3
Enter element:1
Enter element:4
Enter element:5
Sorted list is: [1, 1, 3, 3, 4, 5, 6]
как я могу изменить свой код, чтобы он выглядел так:
list 1 : 1 2 3 4
list 2 : 5 6 7 8
output :[ 8,7,6,5,4,3,2,1]






Чтобы ввести список в одну строку, сделайте что-то вроде
a = [int(i) for i in input("list 1: ").split(" ")]
и, как отметил Альбин Пол в комментариях, используйте
new.sort(reverse=True)
сортировать от высшего к низшему
1.если вы хотите изменить отсортированный массив, который вы можете использовать ниже:
new.sort(reverse=True)
new[::-1]#will give you a reverse list
#or else you can use predefined method
new.reverse()
Это сработает. Вместо этого вы также можете запросить ввод через запятую.
Пример ввода будет выглядеть следующим образом для каждого списка:
1 2 3 4 5
lst1 = input("Enter list of space separated numbers:") # input = `2 1 4 7 5 9`
lst2 = input("Enter list of space separated numbers:")
a = [int(i) for i in lst1.split(' ') if i.isdigit()]
c = [int(i) for i in lst2.split(' ') if i.isdigit()]
new= a + c
new.sort(reverse=True)
print("Sorted list is:",new)
Вы должны добавить базовый элемент управления, который проверяет, являются ли все входные данные положительными целыми числами, такими как are_digits = [c.isdigit() for c in lst1.replace(' ','')], и если all(are_digits) является False, то вы должны попросить повторно ввести список
@soundwave ОП может добавить проверки, если они ему нужны. Я отредактировал композицию списка, чтобы убедиться, что она захватывает только типы цифр. Спасибо за предложение.
Вы можете получить два списка в одной строке и разделить их пробелами. И скройте их в int, объедините их и расположите в порядке убывания.
list1 = input('Enter List 1: ')
list2 = input('Enter List 2: ')
list_1 = list1.split()
list_2 = list2.split()
# print list
list_1 = list(map(int, list_1))
list_2 = list(map(int, list_2))
final_list = list_1 + list_2
# 1
print(sorted(final_list, reverse=True))
# 2
final_list.sort(reverse=True)
print(final_list)```
сортировать в обратном порядке
new.sort(reverse=True)