Hirdetés

Keresés

Új hozzászólás Aktív témák

  • axioma

    veterán

    válasz Hege1234 #3506 üzenetére

    Jaaa, hogy meglevo batch helyett irod, akkor mar ertem hogy hogyan kerulhetett bele ciklus...
    Szerintem kicsit osszevonom neked, szolj ha nem igy ertetted a "ne lepjen ki"-t:
       while True:
          try:
           ans = input("\nírd ide a számot: ")
             num = int(ans)
    if 1<=num<=5:
               return num-1
    print("csak 1-5-ig írhatsz ide számot!")
         except ValueError:
             print("ide csak számot írhatsz!")

    Ez igy addig nem lep ki, es raadasul szelektiv hibauzenetet ad, amig nem jo erteket ir be a user. Igy viszont kilepni lesz nehez belole (jo, ctrl-c vagy ablak becsuk).
    Termeszetesen ekkor mar nem kell a kulso try-except.
    Me'g egy aprocska megjegyzes: ha a pick fuggvenyed ismeri az options-t, akkor nem sok ertelme van annak, hogy az indexszel tersz vissza, lehetne egybol az ertekkel (return options[num-1] es a quality=pick(options) is egyszerusodik).

    Kiegeszites: ha me'gis dict-tel csinalnad akkor a szamot se kene kulon konvertalni es kulon vizsgalni, igaz kevesbe szelektiv hibauzenettel, de az egesz ide egyszerusodik:
    def pick(options):
        print("\nminőség kiválasztása:\n")

       for idx, element in options.items():
           print("{} = {}".format(idx, element))

        while True:
          try:
              ans = input("\nírd ide a számot: ")
             return options[int(ans)]
         except ValueError,KeyError:
             print("ide csak 1-5 egész számot írhatsz!")

    options = {1:"1080", 2:"720", 3:"540", 4:"480", 5:"360"]
    quality = pick(options)
    print(quality)

    (azert nem megy tombbel, mert a pythonban - minden mas esetben udvozlendo modon - le'tezik a negativ indexeles, tehat ha tombbel csinalnad es IndexError-t varnal, akkor a 0 beirasa az 5-os erteknek felelne meg es hiba nelkul atmenne)
    (Valamint a teljes konvertalas kikerulheto, ha a dict-nek a kulcsa az '2' alakban van megadva es nem 2 szamkent. Mondjuk a szamossal me'g az 1+1 input is ervenyes, ugy meg a '2 ' - plusz szokoz - se menne at... szoval azt nem javaslom. Anno ezeket ahol megoldhato nem inputtal - valasztott szam + enter -, hanem keyboard figyelessel oldottak meg, ott akkor 1 billt nez csak meg, mar amig nincs 10-nel tobb opciod.)

Új hozzászólás Aktív témák