Мне просто интересно, почему, когда я беру целое число строки, например int('string'), почему вы получаете ошибку значения в python 3.2, а не ошибку типа. Я вижу, что определение ошибки типа определено на сайте python следующим образом: Возникает, когда операция или функция применяется к объекту неподходящего типа. Связанное значение представляет собой строку, содержащую сведения о несоответствии типов.
это не оператор int, а строка неподходящего типа? Когда я это делаю, я получаю 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