Ebben a python kódban mi a hiba?
Igazábol semmi bonyolult nincsen benne
def normlaw(baker=None):
print("parancs:112 = árak")
print("parancs:0 = pénz")
income = baker*2
money =+ income
produce = baker*2
food =+ produce
print(money + "$")
print(food + "db")
parancs = str(input("command:"))
if parancs is "0":
elif parancs == "1":
money -= 50
baker += 1
és ezt a visszajelzést kaptam
elif parancs == "1":
^
IndentationError: expected an indented block
Szerintetek mi a hiba? Segítségeteket előre is köszönöm.
= )
Azt megcsináltam csak bemásolás után eltüntek( =
elif parancs == "1":
money -= 50
baker += 1
de köszi ( =
Használj valamilyen kódmegosztó oldalt - például:
Másrészt: amikor a "parancs" változó értéke "0" lesz nem történik semmi, egyből jön a "viszont ha 1" ág.
Na most vagy történjen valami a "parancs" változó "0" értéke esetén (akár egy pass parancs - [link] - is), vagy akkor szedd ki és csak azt ellenőrizd, hogy a változó értéke "1"-e.
A teljes kód így néz ki (köszönöm a linket)
remélem meg tudjátok nyitni
a tervem szerint az elején jelzett számokkal (pl baker:1 ...) az 1 es paranccsal lehetne vásárolni
Köszönöm a segítségeket.
Oda van írva. Azt várja hogy az
if parancs is "0":
sor után behúzd. Nincs behúzás azért szól. Ha üres blokkot akarsz, tehát ha a parancs == "0" akkor ne csináljon semmit, akkor is kell utána írni valamit, ez esetben egy pass parancsot ami nem csinál semmit.
if parancs == "0":
. . pass # if után mindig kell behúzás!
elif parancs == "1":
. . money -= 50
. . baker += 1
Az "==" és az "is" összehasonlítás nem ugyan az. Ha érték szerint hasonlítasz össze akkor mindig "=="-t használj. Az "is" csak akkor igaz ha ugyan arra az objektumra mutatnak az operandusok.
Továbbra is az a gond, amit a #4-es hozzászólásomban írtam: az if feltétel teljesülésekor nem történik semmi.
Tegyél be a feltétel teljesülésekor minimum egy pass parancsot.
Másrészt: szám nem adható össze karakterlánccal, ezért a számot tartalmazó változót karakterlánccá kell alakítani.
Harmadrészt: a normlaw() függvény baker alapértelmezett paraméterének (amit nem értek teljesen, hogy mire szolgál, pláne hogy van ugyanolyan nevű globális változó is) számnak kell lennie, mert a függvény törzsén belül műveleteket végzel vele.
Szóval megtákolva:
Azon kívül hogy szinte semmi nem javítottál ki amit leírtunk, amit kijavítottál, sajnos rosszul. A hibaüzenet alapján nem találja a baker nevet, ami nem csoda hiszen megpróbáltad beírni a global kulcsszót csak rossz helyre. Nem a globális szkópnak kell jelezni hogy a globális szkópban bizony globális nevek vannak, hanem a függvénynek kell jelezni hogy egy globális nevet próbálsz írni és nem lokálisat. Ergo a függvénybe írd hogy global ha írod a nevet. #7-es kódja azért működött mert a baker változót lokálisan, paraméterben hozta létre, a globálisat soha nem is használta, így az feleslegesen volt ott. Erre utalt is. Te most nem használod a globálisat, és a lokális sem létezik.
Az összehasonlításokat, int + str konkatenációt meg a többit amit leírtunk nem javítottad.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!