現在、私はPythonを習得するのに5週間掛かり、とても簡単なバージョンのBlackjackをプログラムしようとしています。 I行なわに近いですが、私は、この特定のエラーメッセージを乗り越えることはできません。ここでTypeError:int()引数は、文字列、バイトのようなオブジェクトまたは数字で、 'タプル'でなければなりません
TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'
は、コードは次のとおりです。
import random
print("Welcome to my Black Jack program! Let's play!\n")
def deal_card():
Jack = 10
Queen = 10
King = 10
Ace = 1
cards = [Ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King]
drawn_card = cards[random.randrange(1, 13)]
return drawn_card
def get_player_score():
first_player_card = deal_card()
second_player_card = deal_card()
sum_player_cards = first_player_card + second_player_card
print ("Your card total is: ", sum_player_cards, ".", sep="")
while sum_player_cards < 21:
choice = int(input("Would you like to hit or stay? Enter 1 for 'hit' or 2 for 'stay'. "))
if choice == 1:
new_card = deal_card()
sum_player_cards = sum_player_cards + new_card
print ("Your new total is: ", sum_player_cards, ".", sep="")
elif choice == 2:
return()
else:
print("Please choose 'hit' or stay'.")
choice = input("Would you like to hit or stay? Enter 1 for 'hit' or 2 for 'stay'. ")
if sum_player_cards > 21:
return()
return int(sum_player_cards)
def get_dealer_score():
first_dealer_card = deal_card()
second_dealer_card = deal_card()
sum_dealer_cards = int(first_dealer_card + second_dealer_card)
while sum_dealer_cards <= 16:
another_dealer_card = deal_card()
sum_dealer_cards = sum_dealer_cards + another_dealer_card
if sum_dealer_cards > 16:
print("The dealer's card total is: ", sum_dealer_cards, ".", sep="")
return int(sum_dealer_cards)
def main():
player_score = get_player_score()
dealer_score = get_dealer_score()
if player_score > dealer_score and player_score <= 21:
print("You win!")
elif dealer_score > player_score and dealer_score <= 21:
print("The dealer wins!")
elif dealer_score <= 21 and player_score > 21:
print("You've gone bust! Dealer wins!")
elif dealer_score > 21:
print("The dealer busts! You win!")
main()
私は、Python、第4版で出始めにかろうじて5つの章をしています。だから私は最初の5つの章でカバーされている原則だけを使うべきです。
'return()'のような文は空のタプル '()'を返します。何も返さない場合は、 'return'を使います。あなたのケースでは、 'return 0'がもっと適切かもしれませんが、分かりません。 – Evert
さまざまな 'int(...)'呼び出しについて興味があります。おそらくユーザ入力(これは常に文字列)のためのもの以外の必要性はほとんどありません。 – Evert
これは、デバッグのためのprint文を求めていました。おそらく次回はそのことをやるべきでしょう。 –