problém -python program

Sekcia: Programovanie 14.05.2011 | 17:19
tomas   Návštevník
urobil som jednoduchý program v pythone:
import random
cislo1 = random.randint(1,4)
cislo2 = random.randint(1,4)
print ("Kolko je:", cislo1, "x", cislo2, "?")

while 1:
odpoved = input("vasa odpoved je: ")
try:
odpoved = int(odpoved)
break
except (NameError):
pass

spr = cislo1*cislo2
if spr==odpoved:
print("spravne .... si frajer")
else:
print("zle .... hanbi sa", "je to:", cislo1*cislo2)

problém je ten že ak sa program spýta na výsledok a ja zadám písmeno a nie čislo tak vypíše chybu namiesto toho aby sa spýtal ešte raz až kým nezadám číslo.

chyba:
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
('Kolko je:', 2, 'x', 2, '?')
vasa odpoved je: ddd

Traceback (most recent call last):
File "/home/tommq/Dokumenty/nasobilka.py", line 7, in <module>
odpoved = input("vasa odpoved je: ")
File "<string>", line 1, in <module>
NameError: name 'ddd' is not defined
>>>

kde mam chybu ? diki
    • Re: problém -python program 14.05.2011 | 17:40
      Avatar m4jkl   Používateľ
      import random
      cislo1 = random.randint(1,4)
      cislo2 = random.randint(1,4)
      print ("Kolko je:", cislo1, "x", cislo2, "?")
      
      while 1:
      odpoved = raw_input("vasa odpoved je: ")
      try:
      odpoved = int(odpoved)
      break
      except (NameError):
      pass
      
      spr = cislo1*cislo2
      if spr==odpoved:
      print("spravne .... si frajer")
      else:
      print("zle .... hanbi sa", "je to:", cislo1*cislo2) 

      http://docs.python.org/library/functions.html?highlight=input#input
      • Re: problém -python program 14.05.2011 | 17:52
        tomas   Návštevník
        teraz takato chyba :-) :
        Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
        [GCC 4.5.2] on linux2
        Type "copyright", "credits" or "license()" for more information.
        >>> ================================ RESTART ================================
        >>>
        ('Kolko je:', 2, 'x', 3, '?')
        vasa odpoved je: 6
        spravne .... si frajer
        >>> ================================ RESTART ================================
        >>>
        ('Kolko je:', 2, 'x', 3, '?')
        vasa odpoved je: sdr

        Traceback (most recent call last):
        File "/home/tommq/Dokumenty/nasobilka.py", line 9, in <module>
        odpoved = int(odpoved)
        ValueError: invalid literal for int() with base 10: 'sdr'
        >>>'

        ked zadam cislo je to ok ale ked pismena tak opet chyba (ale už ina :-))
        • Re: problém -python program 14.05.2011 | 17:55
          Avatar m4jkl   Používateľ
          tak musis asi zachytavat ValueError, nie NameError ;)
          • Re: problém -python program 14.05.2011 | 17:58
            tomas   Návštevník
            aha ..už to ide ...diki