Просто се чудех защо, когато взема цяло число от низ като int('string'), защо получавате грешка в стойността в Python 3.2, а не грешка в типа. Виждам, че определението за грешка в типа е дефинирано на сайта на Python по следния начин: Повишава се, когато операция или функция се прилага към обект от неподходящ тип. Свързаната стойност е низ, даващ подробности за несъответствието на типа.
int не е ли операторът и низът е неподходящ тип? Когато правя това, получавам ValueError и не разбирам причината за това.
Ето кода. Така че, когато инстанцирам класа с ранг, който има низ за опит и нарочно получавам грешка, получавам valueerror, а не тип, както бих очаквал.
class Card:
#attributes
list_rank= ["","Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]
list_suit={"d":"diamonds","c":"clubs","h":"hearts","s":"spades"}
#initialize rank and suit
def __init__(self,rank,suit):
self.rank=int(rank)
self.suit=suit
#return the rank of the card
def getRank(self):
return(self.list_rank[self.rank])
#return the suit of the card
def getSuit(self):
return(self.list_suit[self.suit])
#value of the cards
def bjValue(self):
if(self.rank<10):
return(self.rank)
else:
return(10)
#return the rank and suit of the card
def __str__(self):
return (self.list_rank[self.rank]+" of "+self.list_suit[self.suit])
ValueError
. - person Frerich Raabe   schedule 12.02.2015int
не е оператор, това е вграден клас. И когато извикатеint(x)
, вие извиквате конструктора на този клас. - person Frerich Raabe   schedule 12.02.2015TypeError
няма да ви помогне, ако се опитвате да направитеint("Ace")
- person David Reeve   schedule 12.02.2015'string'
е валидно число при основа 36, т.е.int('string', base=36)
се оценява на1743045676
(десетично). ;-) - person Frerich Raabe   schedule 12.02.2015