Как добавить первый и последний элементы списка и вставить их , и сделать это для всего списка в цикле?

#python #loops

Вопрос:

Я пытаюсь сделать калькулятор любви. Для этого я беру два имени и добавляю «любит» между этими именами. разделите всю строку на символы. создайте каталог с количеством повторений символов в списке в качестве значения.

Теперь мне нужно добавить первый и последний элементы в список значений и добавить сумму в список other_list. И делайте это по кругу, пока у меня не останется только две цифры list_of_numbers . У меня возникли проблемы в части цикла. пожалуйста, кто — нибудь, помогите мне . Спасибо

 name1 = input("Hey please enter first name heren")
name2 = input("Hey please enter second name heren")
love = "loves"

final_string = name1   love   name2
list_of_name = list(final_string)

numbers = {}

for lets in list_of_name:
    if lets not in numbers:
        numbers[lets] = 1
    else:
        numbers[lets]  = 1

list_of_numbers = list(numbers.values())

other_list = []
i = len(list_of_numbers)
print(list_of_numbers)

"""this is where i am having problem"""
if len(list_of_numbers) != 2;
    for x in range(0, i, 2):
        a = int(list_of_numbers[0])   int(list_of_numbers[-1])
        other_list.append(a)
        list_of_numbers.pop()
        list_of_numbers.pop(0)
        print(list_of_numbers)
        print(other_list)
list_of_numbers  = other_list
print(list_of_numbers)

 

Ответ №1:

Я не уверен, что должен выводить ваш код, но вы должны проверить длину в цикле for.

 for x in range(0, i, 2):
    if len(list_of_numbers) < 2: # check here
        break
    a = int(list_of_numbers[0])   int(list_of_numbers[-1])
    other_list.append(a)
    list_of_numbers.pop()
    list_of_numbers.pop(0)
    print(list_of_numbers)
    print(other_list)
list_of_numbers  = other_list
print(list_of_numbers)
 

Запуск этого сработал.

 name1 = input("Hey please enter first name heren")
name2 = input("Hey please enter second name heren")
love = "loves"

final_string = name1   love   name2
list_of_name = list(final_string)

numbers = {}

for lets in list_of_name:
    if lets not in numbers:
        numbers[lets] = 1
    else:
        numbers[lets]  = 1

list_of_numbers = list(numbers.values())

other_list = []
i = len(list_of_numbers)
print(list_of_numbers)

"""this is where i am having problem"""
for x in range(0, i, 2):
    if len(list_of_numbers) < 2:
        break
    a = int(list_of_numbers[0])   int(list_of_numbers[-1])
    other_list.append(a)
    list_of_numbers.pop()
    list_of_numbers.pop(0)
    print(list_of_numbers)
    print(other_list)
list_of_numbers  = other_list
print(list_of_numbers)
 

Полный код, который не выдает никаких ошибок.

Комментарии:

1. Эй, произошла ошибка во время выполнения list_of_numbers.pop(0) (ошибка индекса : всплывающее окно из пустого списка)

Ответ №2:

Не могли бы вы, пожалуйста, пояснить, почему вы пропускаете 2 шага for x in range(0,i,2) ? еще я думаю, что если вам нужен только первый элемент и последний элемент списка, пока в списке не останется 2 элемента, нет необходимости пропускать 2 элемента, вы можете использовать while цикл.

 while(len(list_of_numbers) > 2):
        a = int(list_of_numbers[0])   int(list_of_numbers[-1])
        other_list.append(a)
        list_of_numbers.pop()
        list_of_numbers.pop(0)
        print(list_of_numbers)
        print(other_list)
list_of_numbers  = other_list
print(list_of_numbers)
 

Я обновил ваш код в зависимости от проблемы. Здесь я использовал OrderedDict() правильную сумму и изменил логику внутри цикла, чтобы правильно фиксировать сценарии, например, когда в списке более 1 элемента и когда в списке остается только 1 элемент.

 from collections import OrderedDict
name1 = input("Hey please enter first name heren")
name2 = input("Hey please enter second name heren")
love = "loves"

final_string = name1   love   name2
list_of_name = list(final_string)

numbers = OrderedDict()

for lets in list_of_name:
    if lets not in numbers:
        numbers[lets] = 1
    else:
        numbers[lets]  = 1

list_of_numbers = list(numbers.values())
print(list_of_numbers)

other_list = []
i = len(list_of_numbers)
print(list_of_numbers)

"""this is where i am having problem"""
while(list_of_numbers):
    if(len(list_of_numbers) == 1):
        other_list.append(list_of_numbers.pop())
    else:
        a = int(list_of_numbers[0])   int(list_of_numbers[-1])
        other_list.append(a)
        list_of_numbers.pop()
        list_of_numbers.pop(0)
    
    if(len(list_of_numbers) == 0):
        #print(len(list_of_numbers))
        list_of_numbers  = other_list
        other_list.clear()
        if (len(list_of_numbers)==2):
            print(list_of_numbers)
            break
        
print("--" % (list_of_numbers[0],list_of_numbers[1]))  
 

Комментарии:

1. youtu.be/oFsLVG7EAZ4 не могли бы вы, пожалуйста, проверить эту ссылку. я пытаюсь это закодировать . Спасибо.

2. @Mariya Я обновил ваш код в зависимости от проблемы