Top.Mail.Ru
Ответы

Подскажите почему этот код не работает и как его можно исправить. Пожалуйста

Задание: В рулоне с автобусными билетами 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.

Исправленный код:

12345678910111213141516171819202122232425262728293031
 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 писать, там уж точно помогут.

Аватар пользователя
Ученик

никак