преподаватель просит уйти от использования в коде функций global, но уйти от них не получается, иначе неправильно подсчитывается кол-во очков
рабочий код с глобалом такой
def get_score(analized_res):
global total# TODO от глобальных переменных стоит отказываться в пользу параметров
# TODO так проще контролировать содержимое переменной
total = 0
count = 0
frames = 0
for frame, result_frame in (analized_res.items()):
frames += 1
count += 1
check_errors(result_frame)
game_result(result_frame)
print(f'Фрейм {count} результат {result_frame}')
print(f'кол-во очкoв {total}')
if frames != 10:
raise Exception('Неправильное количество фреймов!')
return total
def game_result(result_frame):
global total # TODO тут тоже не стоит использовать глобал
# TODO в целом старайтесь избегать этого оператора
# TODO а необходимые данные в функцию передавайте через параметры
if 'X' in result_frame:
total += 20
elif '/' in result_frame:
total += 15
elif '-' in result_frame:
total += 0
else:
total += int(result_frame[0]) + int(result_frame[1])
return result_frame,total
def check_errors(result_frame):
if '0' in result_frame:
raise ValueError('Введено неправильное значение')
elif '/' in result_frame[0]:
raise ValueError('Spare на первом броске')
elif 'X' in result_frame[1]:
raise ValueError('Strike на втором броске')
if result_frame[0].isdigit() and result_frame[1].isdigit() and int(result_frame[0]) + int(result_frame[1]) >= 10:
raise ValueError('Введено неправильное значение, сумма одного фрейма больше 9 очков')