On 27/09/2013 11:24, markot...@gmail.com wrote:
from random import *
from math import floor


kaarte_alles = 52
kaart_tõmmatud = [False for i in range(52)]


mast = ["ärtu", "ruutu", "poti", "risti"]
aste = ["äss", "kaks", "kolm", "neli","viis", "kuus", \
         "seitse", "kaheksa", "üheksa", "kümme", "soldat",\
         "emand", "kuningas"]

def tõmba_kaart():
     global kaarte_alles
     if kaarte_alles == 0:
         print("Segan pakki")
         kaarte_alles = 52
         for i in range(52):
             kaart_tõmmatud[i] = False
     kaarte_alles -= 1
     n = random(kaarte_alles)
     kaart = vali_järgmine_vaba(n)
     m = kaart % 13
     a = kaart / 13
     print(mast[int(a)] + " " + aste[int(m)])

def vali_järgmine_vaba(n):
     i = -1

     while(n  > 0):
         n -= 1
         i = i + 1
         while kaart_tõmmatud[i]:
             i = i + 1
     kaart_tõmmatud[i] = True
     return i

def random(n):
     return randint(0, n)

while True:
     n = int(input("Mitu kaarti tõmmata(0 et väljuda): "))
     if(n==0):
         break

     for i in range(n):
         tõmba_kaart()


HI im trying to make a card dealer, but this code doesent work correctly. It 
deasl cards, but the cards to repeat. when i type in 52 ten i might get 3 the 
same cards. This is a translation from my c++ code. In c++ it works correctly.

Suppose random(...) returns 0.

In 'vali_järgmine_vaba', n == 0, so it won't run anything in the
'while' loop, therefore i == -1, therefore:

    kaart_tõmmatud[-1] = True

(which sets the last item in the list).

If random(...) returns 0 again (which is possible),
'vali_järgmine_vaba' will do exactly the same thing.

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to