Kezdőoldal » Számítástechnika » Programozás » Ebben a python kódban mi a hiba?

Ebben a python kódban mi a hiba?

Figyelt kérdés

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.

= )



2016. ápr. 11. 17:46
1 2
 1/12 anonim ***** válasza:
A behúzásokkal van probléma, az egy blokkba tartozó dolgokat húzd be tabbal.
2016. ápr. 11. 18:17
Hasznos számodra ez a válasz?
 2/12 A kérdező kommentje:

Azt megcsináltam csak bemásolás után eltüntek( =

elif parancs == "1":

money -= 50

baker += 1

de köszi ( =

2016. ápr. 11. 18:19
 3/12 A kérdező kommentje:
Itt is levette xd
2016. ápr. 11. 18:21
 4/12 anonim ***** válasza:

Használj valamilyen kódmegosztó oldalt - például:

[link]


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.

2016. ápr. 11. 18:28
Hasznos számodra ez a válasz?
 5/12 A kérdező kommentje:

A teljes kód így néz ki (köszönöm a linket)

[link]

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.

2016. ápr. 11. 18:41
 6/12 anonim ***** válasza:

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.

2016. ápr. 11. 19:00
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:

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:

[link]

2016. ápr. 11. 19:03
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:
Mellesleg nem árt tudni hogy ha globális változót akarsz írni, akkor azt jelezni kell a global kulcsszóval, különben a változó lokális lesz és a globálishoz nem nyúl hozzá.
2016. ápr. 11. 19:26
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:

Na szóval amit tudtam azt átírtam a kódban a válaszaitok alapján (amiket nagyon köszönök) viszont még egy kérdésem lenne hogy a mostaniban a normlaw ,mármint a végén, ezt a

hibaüzenetet adja

[link]

így most ebben mi a hiba?

[link]

2016. ápr. 12. 17:35
 10/12 anonim ***** válasza:

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.

2016. ápr. 12. 18:59
Hasznos számodra ez a válasz?
1 2

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!