#python
Вопрос:
Я пытаюсь закодировать простую игру coinflip с функцией азартных игр. Моя проблема в том, что всякий раз, когда он запускается, он не обновляет balance
переменную. Есть какие-нибудь предложения?
import random balance = 10 win = "Congrats! You have won " lose = "That's too bad, you lost this time! You now have " start_game = False while True: choice = input("Please use one of these commands 'flip', 'balance', or 'end game'. ") if choice == "flip": start_game = True break elif choice == "balance": print(balance) elif choice == "end game": break else: print("Please use one of the listed commands!") if start_game == True: while True: result = random.randint(1,2) if result == 1: result = True elif result == 2: result = False gamble_amount = input("How much would you like to flip? You have " str(balance) " coins. ") if str(gamble_amount) == "balance": print(balance) elif int(gamble_amount) lt;= int(balance) and result == True: int(gamble_amount) * 2 int(balance) int(gamble_amount) print(win str(gamble_amount) "!" " You now have " str(balance) "!") elif int(gamble_amount) lt;= int(balance) and result == False: int(balance) - int(gamble_amount) print(lose str(balance) " coins!")
Комментарии:
1. Всякий раз , когда вы хотите изменить значение переменной , например
balance
, вам нужно позвонитьbalance = new_value
, что бы это ниnew_value
было. Я заметил , что, кроме начальногоbalance = 10
, вы никогда на самом деле не обновляете значениеbalance
.2.Есть несколько мест, где вы просто выполняете формулу, но на самом деле не присваиваете результаты переменной, так что… ничего не происходит. Например:
int(gamble_amount) * 2
иint(gamble_amount) * 2
. Вместо этого я предполагаю, что вы, вероятно, хотите, чтобы это было:balance = balance (gamble_amount * 2)
. И тогда в вашемelif
int(balance) - int(gamble_amount)
должно бытьbalance = int(balance) - int(gamble_amount)
.3.
int(gamble_amount) * 2
,int(balance) int(gamble_amount)
иint(balance) - int(gamble_amount)
не делает ничего полезного. Вы просто вычисляете значение, но никогда не используете его или не сохраняете, вы просто вычисляете его и выбрасываете результат.4. Кроме того, все эти отливки не нужны. Вам не нужно этого делать
str(gamble_amount)
, потому что это уже строка, и вам не нужно этого делатьint(balance)
, потому что это уже целое число.5. Спасибо всем вам за помощь. @JNevill Теперь это определенно имеет смысл, и я вижу, в чем моя проблема, и понимаю, как ее исправить.