#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 Я обновил ваш код в зависимости от проблемы