Подскажите почему этот код не работает и как его можно исправить. Пожалуйста
Задание: В рулоне с автобусными билетами 1000000 билетов (с номерами 000000, 000001, 000002,…, 999999). Всего рулонов 10
Счастливым билетом называется билет, у которого сумма цифр в двойках равны (например, 123021 - 1 + 2 = 3 + 0 = 2 + 1).
программа должна отработать за как можно наболее меньшее время
Код:
import time
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
given_sum = 10
start = time.time()
def calculate_sum_of_pair(numbers):
return sum(numbers)
results = {}
for ticket in range(10):
ticket_number = ticket + 1
sum_of_pairs = 0
for pair in range(0, len(numbers), 2):
sum_of_pairs += calculate_sum_of_pair(numbers[pair:pair+2])
if sum_of_pairs == given_sum:
first_number = numbers[0]
if first_number in results:
results[first_number] += 1
else:
results[first_number] = 1
print(results)
end = time.time()
print("Execution time: {} seconds".format(end - start))
А почему сам не можешь проверить...
Код содержит несколько проблем:
Функция calculate_sum_of_pair возвращает сумму всех элементов списка, но для задачи, указанной в коде, необходимо вернуть сумму пары чисел.
В цикле for ticket in range(10): переменная ticket_number используется, но не выполняет никакой важной функции.
В условии if sum_of_pairs == given_sum: нужно использовать первые два элемента из текущей пары, а не первый элемент из списка numbers.
Исправленный код:
import time
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
given_sum = 10
start = time.time()
def calculate_sum_of_pair(pair):
return sum(pair)
results = {}
for ticket in range(10):
sum_of_pairs = 0
for pair in range(0, len(numbers), 2):
pair_of_numbers = numbers[pair:pair+2]
sum_of_pairs += calculate_sum_of_pair(pair_of_numbers)
if sum_of_pairs == given_sum:
first_number, second_number = pair_of_numbers
if first_number in results:
results[first_number] += 1
else:
results[first_number] = 1
print(results)
end = time.time()
print("Execution time: {} seconds".format(end - start))
import time
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
given_sum = 10
start = time.time()
def calculate_sum_of_pair(numbers):
return sum(numbers)
results = {}
for ticket in range(1000000):
ticket_number = ticket + 1
sum_of_pairs = 0
for pair in range(0, len(numbers), 2):
sum_of_pairs += calculate_sum_of_pair(numbers[pair:pair+2])
if sum_of_pairs == given_sum:
first_number = numbers[0]
if first_number in results:
results[first_number] += 1
else:
results[first_number] = 1
print(results)
end = time.time()
print("Execution time: {} seconds".format(end - start))
Это тебе надо на cyberforum писать, там уж точно помогут.
никак