generator wyniku tenisowego

generator wyniku tenisowego
SC
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:2
0

Napisałem generator wyniku tenisowego, 5 setowego. Zapewne jest na to jakiś prostszy, bardziej elegancki i profesjonalny sposób. Fajnie, gdyby ktoś coś podpowiedział :)

Z góry dziękuję i pozdrawiam.

Kopiuj

import random 

counterPlayer1 = 0
counterPlayer2 = 0

set1player1 = 0
set1player2 = 0 

### set 1 ###

set1 = random.randint(0,11)
set2 = random.randint(0,11)
set3 = random.randint(0,11)
set4 = random.randint(0,11)
set5 = random.randint(0,11)

if set1 in range(0,6):
	set1player1 = random.randint(6,7)
	counterPlayer1 += 1
	if set1player1 == 6:
		set1player2 = random.randint(0,4)
	elif set1player1 == 7:
		set1player2 = random.randint(5,6)
else:
	set1player2 = random.randint(6,7)
	counterPlayer2 += 1
	if set1player2 == 6:
		set1player1 = random.randint(0,4)
	elif set1player2 == 7:
		set1player1 = random.randint(5,6)
		
### set 2 ###


if set2 in range(0,6):
	set2player1 = random.randint(6,7)
	counterPlayer1 += 1
	if set2player1 == 6:
		set2player2 = random.randint(0,4)
	elif set2player1 == 7:
		set2player2 = random.randint(5,6)
else:
	set2player2 = random.randint(6,7)
	counterPlayer2 += 1
	if set2player2 == 6:
		set2player1 = random.randint(0,4)
	elif set2player2 == 7:
		set2player1 = random.randint(5,6)
		
### set 3 ###

set3 = random.randint(0,11)
if set3 in range(0,6):
	set3player1 = random.randint(6,7)
	counterPlayer1 += 1
	if set3player1 == 6:
		set3player2 = random.randint(0,4)
	elif set3player1 == 7:
		set3player2 = random.randint(5,6)
else:
	set3player2 = random.randint(6,7)
	counterPlayer2 += 1
	if set3player2 == 6:
		set3player1 = random.randint(0,4)
	elif set3player2 == 7:
		set3player1 = random.randint(5,6)



if counterPlayer1 == 3 or counterPlayer2 == 3:
	pass
else:
	### set 4 ###

    if set4 in range(0,6):
	    set4player1 = random.randint(6,7)
	    counterPlayer1 += 1
	    if set4player1 == 6:
		    set4player2 = random.randint(0,4)
	    elif set4player1 == 7:
		    set4player2 = random.randint(5,6)
    else:
	    set4player2 = random.randint(6,7)
	    counterPlayer2 += 1
	    if set4player2 == 6:
		    set4player1 = random.randint(0,4)
	    elif set4player2 == 7:
		    set4player1 = random.randint(5,6)
		    


if counterPlayer1 == 3 or counterPlayer2 == 3:
	pass
else:
	### set 5 ###

    if set5 in range(0,6):
	    set5player1 = random.randint(6,7)
	    counterPlayer1 += 1
	    if set5player1 == 6:
		    set5player2 = random.randint(0,4)
	    elif set5player1 == 7:
		    set5player2 = random.randint(5,6)
    else:
	    set5player2 = random.randint(6,7)
	    counterPlayer2 += 1
	    if set5player2 == 6:
		    set5player1 = random.randint(0,4)
	    elif set5player2 == 7:
		    set5player1 = random.randint(5,6)

print(counterPlayer1, counterPlayer2)

if counterPlayer1 + counterPlayer2 == 3:
	print('Novak Djokovic - Andy Murray %s - %s %s - %s %s - %s ' % (set1player1, set1player2, set2player1, set2player2, set3player1, set3player2))
elif counterPlayer1 + counterPlayer2 == 4:
	print('Novak Djokovic - Andy Murray %s - %s %s - %s %s - %s %s - %s' % (set1player1, set1player2, set2player1, set2player2, set3player1, set3player2, set4player1, set4player2))
elif counterPlayer1 + counterPlayer2 == 5:
	print('Novak Djokovic - Andy Murray %s - %s %s - %s %s - %s %s - %s %s - %s' % (set1player1, set1player2, set2player1, set2player2, set3player1, set3player2, set4player1, set4player2, set5player1, set5player2))
	


 
Maciej Cąderek
Maciej Cąderek
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Warszawa
  • Postów:1264
0

Pro tip: obczaj słowo kluczowe def

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:minuta
  • Postów:6695
0

A potem class ;)


🕹️⌨️🖥️🖱️🎮
L9
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 7 lat
  • Postów:19
0

Trochę bez sensu jest generowanie całkowicie losowego wyniku tenisowego. Równie dobrze mógłbyś po prostu losować w pętli zwycięzcę seta. Jeżeli ma to mieć jakieś zastosowanie, to użyłbym wiadomości z rachunku prawdopodobieństwa i statystyki. Dla przykładu na podstawie statystyk dotyczących gry tenisisty można by zliczać wartości oczekiwane prawdopodobieństwa zdobycia punktu przy swoim serwisie. Potraktowałbym seta jako proces stochastyczny zliczający zdobyte punkty. Prawdopodobnie musiałbyś liczyć sobie wartości oczekiwane wektora losowego o rozkładzie dwupunktowym. No i jeszcze rzecz jasna musiałbyś przyjąć sobie jakąś formułę szacującą prawdopodobieństwo zdobycia punktu.

Co do języka, koledzy dobrze mówią. W ten sposób daleko nie zajedziesz, bo twój program jest skonstruowany jak stary program na karcie perforowanej. Elegancka notacja powinna zająć trzy razy mniej miejsca.

Przytoczone przeze mnie rozwiązanie byłoby niezłym ćwiczeniem na początki z programowaniem. Pozdrawiam;)

edytowany 1x, ostatnio: Lucek91
SC
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:2
0
Maciej Cąderek napisał(a):

Pro tip: obczaj słowo kluczowe def

Nie bardzo rozumiem jak można by tutaj zastosować funkcje :/

Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 4 godziny
  • Postów:1607
0

Za każdym razem, gdy Ci się powtarza jakiś fragment kodu z co najwyżej małymi zmianami, dobrym pomysłem jest go wydzielić jako funkcję. Czyli na przykład każde powtórzenie seta.

Inną wskazówką, że coś dobrze by było wydzielić, jest użycie komentarza tłumaczącego rolę jakiejś linijki, ale to akurat u Ciebie nie występuje.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.