2014-11-23 140 views
-3

我正在从名为Hello World 2nd Edition的书中学习。我不得不写一个程序。 这是我写的:Python错误类型错误:无法连接'str'和'int'对象

class HotDog: 
    def __init__(self): 
     self.cooked_level = 0 
     self.cooked_string = "Raw" 
     self.condiments = [] 
    def __str__(self): 
     msg = "hot dog" 
     if len(self.condiments) > 0: 
      msg = msg + "with" 
     for i in self.condiments: 
      msg = msg+i+", " 
     msg = msg.strip(", ") 
     msg = self.cooked_string + " " + msg +"." 
     return msg 
    def cook(self, time): 
     self.cooked_level=self.cooked_level+time 
     if self.cooked_level > 8: 
      self.cooked_string = "charcoal" 
     elif self.cooked_level > 5: 
      self.cooked_string = "Well-done" 
     elif self.cooked_level > 3: 
      self.cooked_level = "Medium" 
     else: 
      self.cooked_string = "raw" 
    def addCondiemnet(self, condiment): 
     self.condiments.append(condiment) 

myDog = HotDog() 
print myDog 
print "Cooking my Hot Dog for 4 minutes...." 
myDog.cook(4) 
print myDog 
print "Cooking hot dog for 3 more Minutes" 
myDog.cook(3) 
print myDog 
print "What happens if I cook it for 10 more minutes?" 
myDog.cook(10) 
print myDog 
print "Now, im going to add some stuff to my hot dog" 
myDog.addComdiment("ketchup") 
myDog.addComdiment("More ketchup") 
myDog.addComdiment("AND More ketchup") 
print myDog 

如果我运行它,我得到错误信息:

Traceback (most recent call last): 
    File "C:\Users\Jay\Desktop\Python Programs\Chapter 1\AdvancedHOTDOG.py", line 34, in <module> 
    myDog.cook(3) 
    File "C:\Users\Jay\Desktop\Python Programs\Chapter 1\AdvancedHOTDOG.py", line 16, in cook 
    self.cooked_level=self.cooked_level+time 
TypeError: cannot concatenate 'str' and 'int' objects 

如果你知道的问题,那么请回复。

+1

该错误信息是明确的,我想。 – vaultah 2014-11-23 11:31:32

+0

你也在'def addCondiemnet()'中有错字,它应该是'def addCondiment()',当你把它叫做myDog.addComdiment()时,它应该是'myDog.addCondiment()'。 – 2014-11-23 12:02:59

+0

非常感谢,对您而言可能很明显,我已经编程了一个月,并且无法发现错误。因此,thx为您的输入 – Hijinxx 2014-11-23 12:03:12

回答

2

的问题是第22行:

self.cooked_level = "Medium" 

你分配一个字符串self.cook_level。

该行应该是:

self.cooked_string = "Medium" 
相关问题