2017-02-12 3 views
0

質問に答えると、PythonはAce、Jack、QueenまたはKingの変数を10に変更しません。代わりにwhileループをスキップしてそのまま進んでいるようです。Pythonは変数の変更を拒否します

私はpython 3.5を使用しています。

Ace = "Ace" 
Jack = "Jack" 
Queen = "Queen" 
King = "King" 

x = [Ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King, Ace] 
x1 = random.choice(x) 
x2 = random.choice(x) 

# this array is irrelevant to the question. 
suit = ["Spades", "Hearts", "Diamonds", "Clubs"] 
suit1 = random.choice(suit) 
suit2 = random.choice(suit) 
while suit1 == suit2: 
    suit2 = random.choice(suit) 

Ace = "Ace" 
Jack = "Jack" 
Queen = "Queen" 
King = "King" 

while x1 == ["Jack", "Queen" , "King"]: 
    x1 == 10 

while x2 == ["Jack" , "Queen" , "King"]: 
    x2 == 10 

print ("Your cards are the " + str(x1) + " of " + str(suit1) + 
     " and the " + str(x2) + " of " + str(suit2)) 
print (str(x1) + " " + str(x2)) 

# When it tries to add the two variables here, it comes up with an error, 
# as it cannot add "King" to "10", since "King" is not a number. 
total = (int(x1) + int(x2)) 
+0

このコードはほとんど意味がないと私はあなたが[公式のPythonチュートリアル]のように(チュートリアルをブラッシュアップする必要があると思います( https://docs.python.org/3.6/tutorial/index.html))。 – TigerhawkT3

+1

あなたのx1、x2変数はランダムに1枚のカードに設定されています。それは3枚のカードのリストと同等であることは不可能です!おそらく、あなたは '' Jack、Queen、King ''で '' x1を望んでいるでしょう。そしてテストは ''中 'ではなく '' if''でなければなりません。 – jasonharper

+0

SOはチュートリアルサービスではないので、私はこの質問を議論の対象外としています。 – TigerhawkT3

答えて

0

このコードにはいろいろなものがありますが、クラスで遊ぶ機会と考えてください。考えてみましょう以下:

class Face(object): 
    def __init__(self, face, value): 
     self.face = face 
     self.value = value 
    def __int__(self): 
     return self.value 
    def __str__(self): 
     return self.face 
    def __repr__(self): 
     return self.face 

今、あなたのようなカードを作ることができます。

card = Face('king',13) 
card #will return 'king' 
str(card) #will return 'king' 
int(card) #will return 13 
+0

ありがとう!私はちょうど2日前のようなコードで始まったので、あなたの頭を見て痛いでしょう、ごめんなさい!このクラスのものは重要なので、私はそれを使い始めます! – user7551942

4

置き換えます

while x1 == ["Jack", "Queen" , "King"]: 
    x1 == 10 

で:

while x1 in ["Jack", "Queen" , "King"]: 
    x1 = 10 

最初の行の問題は、それがX1が顔のリストにあったかどうかをチェックしていなかったということです代わりに、x1が実際にfacecardsのリストであるかどうかをテストしました。

2行目の問題は、==が平等テストであることです。あなたはちょうど=を割り当てたいです。

+0

作業済み、並べ替え。今度は私のコードの後半全体が動かなくなります。何も思いつきません。 – user7551942

関連する問題