2017-02-12 104 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變量被隨機設置爲一張卡片。他們不可能等於三張牌的名單!也許你想''在[傑克,女王,國王]''x1。測試應該是「if」,而不是「while」。 – 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實際上是否是一張表情符號卡。

第二行的問題是==是一個相等性測試。你只需要=這是一項任務。

+0

工作,排序。現在我的代碼的整個後半部分不會工作。我不知道。 – user7551942