У меня проблема с использованием функции sum()
в моей определенной функции. Когда я пишу тот же код без определения функции, все работает.
new_game = input("Do you want to play a game of Blackjack? Type 'y' or 'n': \n")
while new_game == 'y':
my_cards = []
computer_cards = []
cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
# Dodaj 2 karty do każdej listy
my_cards += random.sample(cards, 2)
computer_cards += random.sample(cards, 2)
my_score = 0
computer_score = 0
def sum_scores():
my_score = sum(my_cards)
return my_score
computer_score = sum(computer_cards)
return computer_score
if my_score > 21:
if 11 in my_cards:
my_score = my_score - 10
return my_score
if computer_score > 21:
if 11 in computer_cards:
computer_score = computer_score - 10
return computer_score
sum_scores()
print(f"Your cards: {my_cards}, current score: {my_score} ")
print(f"Computer first card: {computer_cards[0]}")
continue_game = input("Type 'y' to get another card, type 'n' to pass.")
if continue_game == "n":
break
Добро пожаловать! Здесь полезно, задавая вопрос, описать, что вы ожидаете получить на выходе, и каков результат на самом деле. «Это не работает» не дает нам понять, каким образом это не работает.
Функция может только return
один раз. Как только ваша функция доберется до своего первого оператора return
, она будет выполнена:
def sum_scores():
my_score = sum(my_cards)
return my_score
# all done!
Вместо этого подождите, пока вы все не закончите вычисление двух оценок, прежде чем возвращать их:
def sum_scores(my_cards, computer_cards):
my_score = sum(my_cards)
computer_score = sum(computer_cards)
if my_score > 21 and 11 in my_cards:
my_score -= 10
if computer_score > 21 and 11 in computer_cards:
computer_score -= 10
return my_score, computer_score
а затем, когда вы вызываете sum_scores()
, обязательно присвойте возвращаемые значения переменным, чтобы вы могли использовать их вне функции:
my_score, computer_score = sum_scores(my_cards, computer_cards)
print(f"Your cards: {my_cards}, current score: {my_score} ")
Добро пожаловать в Stack Overflow. Как вы думаете, что означает
return
в программе на Python? Когда достигаетсяreturn
, что происходит с выполнением функции? Далее — как вы вообще узнали о написании функций? Пожалуйста, вернитесь и перечитайте его.