Edit detail for TypeError revision 1 of 1

1
Editor: geon
Time: 2006/03/19 18:03:14 GMT+0
Note:

changed:
-
cannot concatenate "str" and "int" objects
 
 Tato častá chyba se stane, pokud se snažíte sčítat "hrušky a jablka". V tomto případě se snažíte sčítat řetězec ("str") a číslo ("int"). To prostě Python nedokáže. Python dokáže sečíst dvě čísla, dokáže také sečíst (spojit) dva řetězce nebo dokonce i dva seznamy pomocí znaménka + (plus). Ale sečíst ' "a" + 1 ' to neumí. Příklad::
  
    >>> 1+2
    3
    >>> "a"+"b"
    'ab'
    >>> [4]+[5]
    [4, 5]
    >>> "a"+1
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    TypeError: cannot concatenate 'str' and 'int' objects

 Řešením je převést číslo na řetězec pomocí funkce str(), nebo řetězec na číslo (pokud je v něm číslo) pomocí funkce int(), případně float().::
   
    >>> int("5") + 4
    9
    >>> "a" + str(1)
    'a1'

nazevFunkce() takes exactly 1 argument (0 given)

 Tato chyba se vyskytne, když funkci předáte málo nebo moc argumentů - v tomto případě funkce očekávala jeden (takes exactly 1 argument) a nedostala žádný (0 given).
 
 Řešením je upravit volání funkce tak, aby počet parametrů sohlasil nebo opravit funkci, aby přijímala jiný počet argumentů, případně některé argumenty udělat volitelné/dobrovolné.
      


cannot concatenate "str" and "int" objects

Tato častá chyba se stane, pokud se snažíte sčítat "hrušky a jablka". V tomto případě se snažíte sčítat řetězec ("str") a číslo ("int"). To prostě Python nedokáže. Python dokáže sečíst dvě čísla, dokáže také sečíst (spojit) dva řetězce nebo dokonce i dva seznamy pomocí znaménka + (plus). Ale sečíst "a" + 1 to neumí. Příklad:

    >>> 1+2
    3
    >>> "a"+"b"
    'ab'
    >>> [4]+[5]
    [4, 5]
    >>> "a"+1
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    TypeError: cannot concatenate 'str' and 'int' objects

Řešením je převést číslo na řetězec pomocí funkce str(), nebo řetězec na číslo (pokud je v něm číslo) pomocí funkce int(), případně float().:

    >>> int("5") + 4
    9
    >>> "a" + str(1)
    'a1'

nazevFunkce() takes exactly 1 argument (0 given)

Tato chyba se vyskytne, když funkci předáte málo nebo moc argumentů - v tomto případě funkce očekávala jeden (takes exactly 1 argument) a nedostala žádný (0 given).

Řešením je upravit volání funkce tak, aby počet parametrů sohlasil nebo opravit funkci, aby přijímala jiný počet argumentů, případně některé argumenty udělat volitelné/dobrovolné.