После запуска кода я получаю ZeroDivisionError! Может кто-нибудь объяснить, что происходит? Поиск среднего значения входных данных bscore и gscore
bscore = 0
gscore = 0
bcount = 0
gcount = 0
choice = input("Boy (b), Girl (g) or Quit (q): ")
while (choice != 'q'):
if (choice == 'b'):
score = int(input("Boy score: "))
bscore += score
bcount == 1
#z = (x / y) if y != 0 else 0
elif (choice =='g'):
score = int(input("Girl score: "))
gscore += score
gcount += 1
else:
print("Invalid!")
choice = input("Boy (b), Girl (g) or Quit (q): ")
print("Boy average is: ", (bscore/bcount))
print("Girl average is: ", (gscore/gcount))
bcount == 1 должен был быть bcount += 1. Похоже, вы не нажали Shift, когда хотели. (Закрытое голосование как опечатка.)
Ну, для начала, как вы думаете, что произойдет, если вы не введете ни одного балла за мальчика? Что даст bscore/bcount?
Попался, поэтому вам нужно будет ввести bscore и gscore для результатов на обоих!
@Mr.PlayNoGames Верно. Вы также можете потребовать, чтобы пользователь ввел хотя бы одно значение для каждого из них, или учитывает этот пограничный случай при расчете среднего значения, например. print("Boy average is: ", bscore/(bcount or 1))






Вам нужно заменить
bcount == 1 с bcount += 1. bcount == 1 — это логическое выражение, которое здесь ничего не делает. Похоже, вы хотите увеличить счет в этот момент.
Кроме того, даже после этого может быть ZeroDivisionError, поскольку может случиться так, что ввод никогда не был b или g. Я бы рекомендовал иметь условие if, прежде чем пытаться разделить при печати.
Это было бы одним из источников ошибки. OP никогда не увеличивает bcount и инициализируется 0. Таким образом, деление на это определенно приведет к этой ошибке, даже если бы было введено b и соответствующая оценка
@MatiasCicero - если bcount никогда не увеличивается из-за ошибки в этой строке, то он всегда останется 0 и может привести к ошибке, если он используется в качестве делителя.
Теперь он работает, «bcount == 1» было синтаксической ошибкой с моей стороны!
Вам нужно будет проверить во время деления на случай, если не будет записей мальчиков или девочек, хотя перед делением их количество останется равным 0 @Mr.PlayNoGames.
Bcount == 1 ничего не делает