Advertisement
chudypakir

Problem

Dec 21st, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1.  
  2. import random
  3. import os
  4.  
  5. def ustawienia():
  6. """Funkcja pobiera nick użytkownika, ilość losowanych liczb, maksymalną
  7. losowaną wartość oraz ilość typowań. Ustawienia zapisuje."""
  8.  
  9. nick = input("podaj nick: ")
  10. nazwapliku = nick + ".json"
  11. gracz = czytaj_json(nazwapliku)
  12. odp = None
  13. if gracz:
  14. print("Twoje ustawienia:\nLiczb: %s\nZ Maks: %s\nLosowań: %s" %
  15. (gracz[1], gracz[2], gracz[3]))
  16. odp = input("Zmieniasz (t/n)? ")
  17.  
  18. if not gracz or odp.lower() == "t":
  19. while True:
  20. try:
  21. ile = int(input("Podaj ilość typowanych liczb: "))
  22. maks = int(input("Podaj maksymalną losowaną liczbę: "))
  23. if ile > maks:
  24. print("Błędne dane!")
  25. continue
  26. ilelos = int(input("Ile losowań: "))
  27. break
  28. except ValueError:
  29. print("Błędne dane!")
  30. continue
  31. gracz = [nick, str(ile), str(maks), str(ilelos)]
  32. zapisz_json(nazwapliku, gracz)
  33. return gracz[0:1] + [int(x) for x in gracz[1:4]]
  34.  
  35. def czytaj_json(nazwapliku):
  36. """Funkcja odczytuje dane w formacie json z pliku"""
  37. dane = []
  38. if os.path.isfile(nazwapliku):
  39. with open(nazwapliku, "r") as plik:
  40. dane = json.load(plik)
  41. return dane
  42.  
  43.  
  44. def zapisz_json(nazwapliku, dane):
  45. """Funkcja zapisuje dane w formacie json do pliku"""
  46. with open(nazwapliku, "w") as plik:
  47. json.dump(dane, plik)
  48.  
  49.  
  50.  
  51. def losujliczby(ile, maks):
  52. """Funkcja losuje ile unikalnych liczb całkowitych od 1 do maks"""
  53. liczby = []
  54. i = 0
  55. while i < ile:
  56. liczba = random.randint(1, maks)
  57. if liczby.count(liczba) == 0:
  58. liczby.append(liczba)
  59. i = i + 1
  60. return liczby
  61.  
  62.  
  63. def pobierztypy(ile, maks):
  64. """Funkcja pobiera od użytkownika jego typy wylosowanych liczb"""
  65. print("Wytypuj %s z %s liczb: " % (ile, maks))
  66. typy = set()
  67. i = 0
  68. while i < ile:
  69. try:
  70. typ = int(input("Podaj liczbę %s: " % (i + 1)))
  71. except ValueError:
  72. print("Błędne dane!")
  73. continue
  74.  
  75. if 0 < typ <= maks and typ not in typy:
  76. typy.add(typ)
  77. i = i + 1
  78. return typy
  79.  
  80. def wyniki(liczby, typy):
  81. trafione = set(liczby) & typy
  82. if trafione:
  83. print("\nIlość trafień: %s" % len(trafione))
  84. trafione = ", ".join(map(str, trafione))
  85. print("Trafione liczby: %s" % trafione)
  86. print("k")
  87. else:
  88. print("Brak trafień. Spróbuj jeszcze raz!")
  89. print("\n" + "x" * 40 + "\n") # wydrukuj 40 znaków x
  90. print("Wylosowane liczby:", liczby)
  91. return len(trafione)
  92.  
  93. from Multi import ustawienia, losujliczby, pobierztypy, wyniki
  94. from Multi import czytaj_json, zapisz_json
  95. import time
  96.  
  97. def main(args):
  98. # ustawienia gry
  99. odp, nick, ile, maks, ilelos = ustawienia()
  100. #losujemy liczby
  101. liczby = losujliczby(ile, maks)
  102.  
  103.  
  104. # pobieramy typy użytkownika i sprawdzamy, ile liczb trafił
  105. for i in range(ilelos):
  106. typy = pobierztypy(ile, maks)
  107. trafione = wyniki(set(liczby), typy)
  108. nazwapliku = nick + ".json" # nazwa pliku z historią losowań
  109. losowania = czytaj_json(nazwapliku)
  110.  
  111. losowania.append({
  112. "czas": time.time(),
  113. "dane": (ile, maks),
  114. "wylosowane": liczby,
  115. "ile": ile
  116. })
  117.  
  118. zapisz_json(nazwapliku, losowania)
  119.  
  120. print("\nLosowania:", liczby)
  121. return 0
  122.  
  123.  
  124. if __name__ == '__main__':
  125. import sys
  126.  
  127. sys.exit(main(sys.argv))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement