Kezdőoldal » Számítástechnika » Programozás » Szeretném leszögezni,hogy...

Szeretném leszögezni,hogy nagyon kezdő vagyok még a programozásban. Adott egy olyan feladat,hogy van egy ilyen Stringem: Szervák = "ABABBABABBABA" Az a feladat,hogy meghatározzuk a szervák alapján,hogy ki nyert. Valaki segítene?

Figyelt kérdés

A problémám a következő.

Van a teniszben egy olyan,hogy Deuce ami azt jelenti,hogy ha 40-40 az állása és pl A nyeri a következő szervát akkor nála az Advantage,és ha utánna is A akkor nyer.Ha az A-nál az AD és utánna B akkor megint 40-40 és így a B-nél.

Na én bárhogy próbálkozom a Deuce probléma megoldásával sehogyse megy.Sokféleképpen megpróbáltam megoldani,de sehogy se megy,vagy nem működik.A legtöbbször mindig indexelési hibát kapok.

Itt a kódóm(Python kódról van szó)

szervák = "ABABABABAB"


#A játékos

A_Db = 0

A_Szerva_Pont = 0

A_Game = 0

A_Set = 0


#B játékos

B_Db = 0

B_Szerva_Pont = 0

B_Game = 0

B_Set = 0


#Deuce van-e?


Deuce = False


AktIndex = 0

#String bejárása

for szerva in szervák:

AktIndex+=1

if(szerva == "A"):

A_Db+=1

if(A_Db == 1):

A_Szerva_Pont = 15

if(A_Db == 2):

A_Szerva_Pont = 30

if(A_Db == 3):

A_Szerva_Pont = 40

if(szerva == "B"):

B_Db+= 1

if(B_Db == 1):

B_Szerva_Pont = 15

if(B_Db == 2):

B_Szerva_Pont = 30

if(B_Db == 3):

B_Szerva_Pont = 40

if(A_Db == 4 ):

A_Game+=1

A_Db = 0

A_Szerva_Pont = 0

B_Db = 0

B_Szerva_Pont = 0

if(B_Db == 4 ):

B_Game+=1

B_Db = 0

B_Szerva_Pont = 0

A_Db = 0

A_Szerva_Pont = 0

if(A_Szerva_Pont == 40 and B_Szerva_Pont == 40):

Deuce = True

if(Deuce == True):

if(szervák[AktIndex+1] == "A" and szervák[AktIndex+2] == "A"):

A_Game+= 1

A_Db = 0

A_Szerva_Pont = 0

B_Db = 0

B_Szerva_Pont = 0



jan. 25. 02:07
 1/10 A kérdező kommentje:
A prblémám ugye a Deuce-nál van.Mert azt szeretném leporgramozni,hogy az állás 40-40 akkor az A játékos akkor nyeri meg a Gamet ha a string eleme a +1 és a +2. eleme is A,de sehogyse jó
jan. 25. 02:08
 2/10 A kérdező kommentje:
Tudom,hogy nagyon sok változó van,meg ez nem egy profi megoldás és nagyon szar az enyém csak szeretném megtudni,hogy lehetne megoldani ezen a vonalon amin elindultam
jan. 25. 02:10
 3/10 anonim ***** válasza:

Ne haragudj, nem vagyok biztos benne, hogy teljesen értem a játék menetét a leírásod alapján, így a logikai részben nem tudok segíteni perpillanat.


Az indexelésnél azzal van baj, hogy túliterálsz a sztringen.


Minden szép és jó azzal amit csinálsz, egészen az utolsó előtti elemig. Itt megkapja az AktIndex értéke az utolsó előtti elem indexét, az AktIndex+1 megkapja az utolsó elem indexét és az AktIndex+2 buktatja el ebben az esetben a kódot, mert nincs tovább lépni.


Az egyik lehetséges megoldás, hogy meghagyod ezt az indexelési módot, de beállítasz egy feltételt, hogy csak a string hossza - 2. elemig csinálja.


Az AktIndex helyett egyébként egyszerűbb a ciklust for i in range(len(szervák)) formára átírni, ebben az esetben pedig a szervák[i] fog megfelelni a szervának és könnyebb szervák[i+1]-ként megadni a következő elemet, extra változók bevezetése nélkül.


A másik lehetséges megoldás, hogy kicsit kiforgatod a klasszikus logikát és azt mondod, hogy oké, vizsgáljuk azt, ahol két azonos betű szerepel egymás mellett és annak adjunk pontot, akihez tartozik az a betű. De ebben nem vagyok biztos, mert nem teljesen értem a játék logikáját.

jan. 25. 05:17
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:
Illetve ha jól látom, az aktindex átugorja a nulladik elemet. Ezt a sort: AktIndex+=1 tedd az egész ciklus végére, mert így egyből az első elemmel kezd, nem a nulladikkal. :)
jan. 25. 05:22
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:
Bár nem ez volt a kérdés, de jobb, ha leszoksz az ékezetes karakterek használatáról változónevekben. Egyrészt nem mindenhol van egyformán kódolva (a Micro$oft itt is tojik a szabványokra), másrészt ha külföldi kollégákkal fogsz dolgozni, nekik nehézséget jelent majd leírni.
jan. 25. 08:11
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:
#5: Meg ha nincsenek külföldi kollégák... akkor sem célszerű. Igaz, nem programozás, de a napokban futottam bele egy olyan hibába, hogy egy szoftver nem működött, ha ékezetet tartalmazó mappába telepítették. Pár éve találkoztam olyan (intézményen belüli) levelezőrendszerrel, ahol a csatolmányokat nem lehetett letölteni, ha a nevükben volt szóköz. Attól, mert valamit "hivatalosan" lehet, még nem biztos, hogy érdemes is.
jan. 25. 09:20
Hasznos számodra ez a válasz?
 7/10 anonim válasza:
Horror.
jan. 25. 10:32
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
Ennél a bemenetnél mi az elvárt output: "ABABBABABBABA"
jan. 25. 10:55
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:
Legközelebb tedd fel a kódot egy online compiler-be és küldd el úgy pls, mert ez így nem a legjobb módja ennek.
jan. 26. 07:44
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
Ööö, teniszben nem ugyanaz a játékos szervál végig egy game-en belül? És a deuce a game-en belül van. Ráadásul a példa inputodban 10 szerva van, ami sehogy sem lehet egy "szabályos" teniszmeccs. (6-0, 6-0 a legrövidebb "rendes" meccs a nőknél, a férfiaknál három szettet kell nyerni.)
tegnap 21:32
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2023, 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!