2013-12-08 80 views
1

我想做一個簡單的乘法遊戲。我曾在第一試圖做一個數學遊戲,但數學不工作

m = 1 
total = 3 
print "Which Multiplication tables do you want to practice?" 
toPractice = raw_input() 

while m <= total: 
    print "What is %s times %s" % (toPractice, m) 
    answer = raw_input('Your Answer: ') 
    print answer 

    if answer == toPractice * m: 
     print "Correct!" 
     m = m + 1 

    else: 
     print "Answer %s is incorrect." % (answer) 
     print 'Correct Answer: ', toPractice * m # For testing 
     m = m + 1 # For testing 

這樣的代碼,但這樣做只是讓你在做乘法表(12等)顯示爲1212 12 * 2 121212 12 * 3等,所以我將其轉換爲整數。

toPractice = raw_input() 
toPractice = int(toPractice) 

但我這樣做的時候,它會說,答案到12 * 2是24,但它說,答案是不正確。我已經問過朋友,並試圖搜索周圍,無法弄清楚爲什麼它不工作。

回答

3

不要忘記:raw_input總是返回str。乘以一個字符串只是重複它,例如"12" * 3 = "121212"。你需要使用int函數的輸入轉換爲整數:

answer = raw_input('Your Answer: ') 
answer = int(answer) 

或更短的方式:

answer = int(raw_input('Your Answer: ')) 

你需要在你的計劃,預計每個輸入做到這一點一個號碼。

3

您還需要使用他們的答案的整數!

if int(answer) == toPractice * m: 
+0

我相信Python實際上並沒有施放任何東西。 'int'是一個函數,它接受一些對象並從中構造一個新的整數,而強制轉換則更像是接受數據本身,並以不同的方式解釋它。 (所以在這裏鑄造不是合適的詞,methinks。) – Matthew

+0

公平點,我想它確實創建了一個新對象,因爲字符串對象是不可變的。 – jonrsharpe