2017-02-20 69 views
-1

我可能只是在解決這個錯誤的方式,但在第2行我試圖減去打印字符串內的2個用戶輸入。如何減去字符串中的2個整數

順便說一句,這只是一個nim sum遊戲,用戶選擇金額並先行,然後播放電腦。

def setup(startamt, userturn): 
    print(str("there are " + startamt - userturn + " balls left")) 

def main(): 
    startamt = input("How many balls do you want to start with?(15 or more) ") 
    userturn = input("How many balls will you take?(1-4) ") 
    setup(startamt, userturn) 
+0

您必須轉換'startamt'和'userturn'到'int',目前他們的'str'類型 – ZdaR

+0

@Zdar,爲什麼你在回答的意見,而不是在「您的答案」部分? –

+0

@MaksimKneller有些問題有一些小錯誤或更正,可以用單行程序解釋所以我更喜歡評論部分並保留Answers部分的特殊問題; – ZdaR

回答

0

在您的第二行中,startamt - userturn每個都被評估爲字符串。

您可以做到:

print("there are " + int(startamt) - int(userturn) + " balls left")) 

或使用字符串格式化這是更Python:

print("there are {} balls left".format(int(startamt) - int(userturn))) 
+0

'startamt'和'userturn'是字符串。 – Daniel

+0

@Daniel,謝謝,我更新了一個整數。 –

+0

@JoshP,你把每一個int()?你能編輯你的文章並添加你的新代碼嗎? –

1

的第一個問題是,input()返回一個字符串(str)對象,所以做了您需要將它們轉換爲整數(int())或浮點數(float())。

既然你是3.6,那麼你可以使用字符串插值。例如:

startamt = "52" 
userturn = "9" 
print(f"there are {str(int(startamt) - int(userturn))} balls left") 

前面f指示我們使用內插,其在內部{ }完成。

+0

謝謝,我無意中撒了謊,我用3.5 –

+0

@JoshP:沒關係,你有這個功能期待:-) – cdarke

0

這似乎是工作

def setup(startamt, userturn): 

    print("there are", str((int(startamt) - int(userturn))), "balls left" 

def main(): 
    startamt = input("How many balls do you want to start with?(15 or more) ") 
    userturn = input("How many balls will you take?(1-4) ") 
    setup(startamt, userturn) 


main()