Kezdőoldal » Számítástechnika » Programozás » Ebben a mini programban hol a...

Ebben a mini programban hol a hiba? (python)

Figyelt kérdés

Ittvan a kód: [link]


Nemrég kezdtem el pythont tanulni, tudom hogy egy nagyon alap program, viszont nem sikerült megírnom. Valaki légyszives le tudná irni, hogy mi a hiba, és hogy hogyan tudom kijavítani?



2022. máj. 17. 17:39
 1/8 anonim ***** válasza:
77%
mi a probléma, amit tapasztalsz?
2022. máj. 17. 17:50
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
79%
A 6. sorban levő véletlenszám-generálást áthelyezném a ciklus magjába, a feltétel elé (10-12. sor), így mindig véletlen ajtó tárulna a játékos elé.
2022. máj. 17. 17:53
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
100%
Az összehasonlításnál a 'valasztott_ajto'-t számmá kéne konvertálni, mert így sosem lesz igaz a feltétel.
2022. máj. 17. 17:56
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:

Hogyan tudom megadni hogy csak szám lehessen?

Egy int(input) jó lesz?

2022. máj. 17. 18:01
 5/8 A kérdező kommentje:
Kipróbáltam, nem jó. Légyszi le tudod irni hogy ezt hogyan kell megtenni?
2022. máj. 17. 18:04
 6/8 anonim ***** válasza:

a te szinteden egyelöre jó lesz így valahogy:

valasztott_ajto = int(input('Valaszd ki, ...'))


Az lesz vele a probléma, hogy ha a játékos nem számot ír be, akkor exceptiont fog dobni az int. Erre az a megoldás, hogy az int hívást körbeveszed egy try-except-el. Ha a játékos nem számot ír be, valószínüleg meg kéne próbálni újra beolvasni töle, ezért a try-except blockot még egy ciklussal is körbe kéne venni. Valahogy így:


szam_bekerve = False

while not jo_szam: # Addig fut a ciklus amig nem sikerült bekérni a számot

__try:

____szam = int(input('adj meg egy szamot'))

____szam_bekerve = True # ezen a ponton már megvan a szám, nincs szükség újra futtatni a ciklust

__except ValueError:

____print('Csak számot adhatsz meg!') # Ide akkor jutunk el, ha nem sikerült a koverzió. Mivel a 'szam_bekerve' még mindíg False, ezért a ciklus újra le fog futni.


Persze ezt a logikát valószínüleg több helyen is használni akarod majd, így érdemes lenne betenni egy függvénybe:


def get_number_from_player():

__while True:

____try:

______return int(input('Adj meg egy számot: '))

____except ValueError:

______print('Csak számot adhatsz meg')

2022. máj. 17. 18:17
Hasznos számodra ez a válasz?
 7/8 A kérdező kommentje:
Sajnos nem lett jó. Beírok csak számot, megvárja a sleep-et és bezára a cmd ablakot. [link]
2022. máj. 17. 21:10
 8/8 anonim ***** válasza:
100%

Olvasd el a hibaüzenetet is, ne csak vaktában próbálkozz.


Traceback (most recent call last):

File "d:\Python\teszt\szellem.py", line 22, in <module>

print('A pontod: ' + int(pont))

TypeError: can only concatenate str (not "int") to str


A hiba ott van, hogy a kiírásnál a pontszám egy integer, viszont stringként tudod csak kiírni.


A másik, hogy a valasztott_ajto értékét felülírod 0-val, miután bekéred a számot. Nem tudom, hogy debug céllal van-e benne.

2022. máj. 18. 00:31
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!