2013-02-09 48 views
-2

我是新來的蟒蛇,但我試圖把DogAge成數學方程式,仍然沒有工作類型錯誤:無法轉換「詮釋」對象STR基因座的數學方程式隱含變量

Animal = input("dog or cat? ") 

if Animal == "dog": 
    DogAge = int(input("how old is you dog? ")) 
else: 
    CatAge = int(input("how old is your cat? ")) 

if DogAge == 1: 
    print("your dog's age is 11") 
elif DogAge == 2: 
    print("your dog's age is 22") 
else: 
    print("your dog's age is " + (DogAge - 2 * 4 + 22)) 

給出:

 
TypeError: Can't convert 'int' object to str implicitly 
+1

@RachelGallen這與html或單選按鈕無關。 – l4mpi 2013-02-09 13:50:22

+2

您是否知道'DogAge - 2 * 4 + 22'不是'(DogAge - 2)* 4 + 22',而是'DogAge + 14'? – 2013-02-09 13:50:50

+0

...因爲它被評估爲'DogAge - (2 * 4)+ 22',因爲默認情況下,乘法具有比加法和減法更高的運算符優先級,除非被括號覆蓋。 – martineau 2013-02-09 20:07:14

回答

3

錯誤指出發生了什麼問題。更改此:

print("your dog's age is " + (DogAge - 2 * 4 + 22)) 

要這樣:

print("your dog's age is " + str(DogAge - 2 * 4 + 22)) 

不能連接字符串對象與一個整數。

+1

也可以更簡單地使用'print(「你的狗的年齡是」DogAge - 2 * 4 + 22)「。 – martineau 2013-02-09 20:13:00

3

另一種解決方案:

print("your dog's age is {0}".format((DogAge - 2) * 4 + 22)) 

(假設你要計算(DogAge-2) * 4 + 22,不DogAge + 14)。

+0

謝謝,這幫了很大的忙。 – 2013-02-09 15:53:11

0

您可能需要考慮以不同的方式重新組織代碼,以分開計算狗的年齡和實際打印的值。

因爲稍後有可能將該代碼重構爲函數,如果它變得更復雜。

Animal = input("dog or cat? ") 

if Animal == "dog": 
    DogAge = int(input("how old is you dog? ")) 
else: 
    CatAge = int(input("how old is your cat? ")) 

if DogAge == 1: 
    calculated_dogs_age = 11 
elif DogAge == 2: 
    calculated_dogs_age = 22 
else: 
    calculated_dogs_age = DogAge - 2 * 4 + 22 

print("your dog's age is {0:d}".format(calculated_dogs_age)) 
+0

天哪 - 我不會改變太多的OP代碼 - 所以它們不被他們識別 - 這是一個很好的平衡,很難知道什麼時候停止。你只需要看看SO的格式就會讓OP的代碼感到不舒服。 – sotapme 2013-02-09 14:30:03

相關問題