Kezdőoldal » Számítástechnika » Programozás » Néhány hete elkezdtem tanilni...

Néhány hete elkezdtem tanilni Python nyelven. Csináltam egy scriptet, a gondom az, hogy bár látszólag működik, ha sokszor próbálgatom, van, hogy nem írja ki a választ, csak bekéri az inputot újra, és nem jövök rá miért. Szerintetek?

Figyelt kérdés

import random

def kopapirollo():

return random.choice(["kő","papír","olló"])


valid_options=("kő","KŐ","Ko","KO","ko")

valid_options1=("Papír","PAPÍR","papír","papir")

valid_options2=("ollo","olló","Olló","Ollo","OLLÓ")



print('kő-papír-olló-kilépéshez írjba be: "kilép"')

while True:

valasz=input("Kő/Papír/Olló? ")

if valasz in valid_options:

kopapirollo()

if kopapirollo()=="papír":

print("Ön vesztett")

elif kopapirollo()=="kő":

print("Döntetlen")

elif kopapirollo()=="olló":

print("Ön nyert")

elif valasz in valid_options1:

kopapirollo()

if kopapirollo()=="papír":

print("döntetlen")

elif kopapirollo()=="kő":

print("Ön nyert")

elif kopapirollo()=="olló":

print("Ön vesztett")

elif valasz in valid_options2:

kopapirollo()

if kopapirollo()=="papír":

print("Ön nyert")

elif kopapirollo()=="kő":

print("Ön vesztett")

elif kopapirollo()=="olló":

print("Döntetlen")



2017. febr. 1. 21:20
1 2
 11/14 anonim ***** válasza:
78%

@sédoiglskdjfgélksdjf


Hát a tiéd sem sokkal jobb. Az övén legalább lehet látni hogy mit akar csinálni. Amellett hogy az angollal problémáid vannak (rock-paper-scissors a játék neve és a döntetlen nem tide hanem tie vagy draw), ezektől a concatos, castolós, hackelős megoldásoktól feláll a szőr a hátamon. Akkor legalább valami ilyesmit írj:


result = (player - computer) % 3

if result == 0:

. . print('draw')

elif result == 1:

. . print('win')

else:

. . print('loss')

2017. febr. 2. 07:23
Hasznos számodra ez a válasz?
 12/14 sédoiglskdjfgélksdjf ***** válasza:
0%
:D Haha! Ebbe az oltásba több munkát tettél, mint én a kódba! De a megoldásod legalább elegáns.
2017. febr. 2. 08:57
Hasznos számodra ez a válasz?
 13/14 anonim ***** válasza:
54%

@sédoiglskdjfgélksdjf: Vak vezet világtalant, ugyanis a te megoldásodhoz hasonló gányságot is ritkán látni.


1. Miért nem from random import randint?

2. Te komolyan definiáltál egy függvényt ami annyit csinál, hogy meghívja a randint(1, 3)-at?

3. Miért kell két sorra bontani az input és lower hívásokat?

4. A userInput in kpo_dict.keys() felesleges bonyolítása a userInput in kpo_dict-nek. Amúgy a mixedCase és aláhúzásos változók vegyítése csúnya, a mixedCase konkrétan ellenjavallott.

5. Amúgy is felesleges csekkolgatni hogy mi van benne a szótárban és mi nincs, szebb bevenni az "exit" kulcsot 4-es értékkel (hiszen azt a szót is értelmezed), és kpo_dict.get(userInput, 0)-val elejét venni a pö-csörészésnek. 0-ra újrakéred, 4-re kilépsz, a többire meg játszol.

6. A stringes-intes gányolástól szóhoz sem jutok. De ha már mindenképp ilyen idióta megoldást akarsz használni, miért nem 10*x + y?

7. Ez a moduló 11-es cucc annyira szar hogy szinte már jó. Kreativitásnak nem vagy híján, az biztos. Amúgy ha már egyszer ismered a modulót, használhattad volna a #11-es ötletét, esetleg kiegészítve egy ifezgetés nélküli, közvetlen kifejezéssel, pl. print ("draw", "win", "loss")[(player - computer) % 3], a tuple-t az olvashatóság kedvéért esetleg kiemelve.

8. A flagezgetés felesleges, while kpo(): pass is megteszi.


Na ezért nem szép dolog kinevetni a kezdőt az első szárnypróbálgatásaiért.

2017. febr. 2. 16:51
Hasznos számodra ez a válasz?
 14/14 A kérdező kommentje:
Lehet, hogy nem szép megoldás, mint írtam alig 3 hete kezdtem bele egyáltalán a programozásba,és ez egy gyakorlófeladat. Egyelőre ennyit tudok, lesz majd jobb is:D Aki segített, annak nagyon szépen köszönöm!
2017. febr. 4. 15:28
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!