Advertisement
Sve_orange

loto

Feb 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.16 KB | None | 0 0
  1. import random
  2.  
  3.  
  4. class Ticket:
  5.     content = []
  6.  
  7.     def _generate_line(self):
  8.         rows = []
  9.         line = []
  10.         for i in range(5):
  11.             while True:
  12.                 row = random.randint(1, 9)
  13.                 if row not in rows:
  14.                     break
  15.             rows.append(row)
  16.             if row == 1:
  17.                 start = 1
  18.                 end = 9
  19.             else:
  20.                 start = row * 10 - 10
  21.                 end = row * 10 - 1
  22.             line.append(random.randint(start, end))
  23.         return (sorted(line))
  24.  
  25.     def _generate_ticket(self):
  26.         self.content = []
  27.         for _ in range(3):
  28.             self.content.append(self._generate_line())
  29.  
  30.     def __init__(self):
  31.         self._generate_ticket()
  32.  
  33.     def print(self, casks=[]):
  34.         print('---------------------------')
  35.         for line in self.content:
  36.             j = 0
  37.             for i in range(1, 10):
  38.                 if i == 1:
  39.                     start = 1
  40.                     end = 9
  41.                 else:
  42.                     start = i * 10 - 10
  43.                     end = i * 10 - 1
  44.                 if line[j] >= start and line[j] <= end:
  45.                     if line[j] in casks:
  46.                         print('{:2}'.format('-'), end='')
  47.                     else:
  48.                         print('{:2}'.format(line[j]), end='')
  49.                     if j < len(line) - 1:
  50.                         j += 1
  51.                 else:
  52.                     print('  ', end='')
  53.                 print(' ', end='')
  54.             print('\n')
  55.         print('---------------------------')
  56.  
  57.     def check_number(self, number):
  58.         for line in self.content:
  59.             if number in line:
  60.                 return True
  61.         return False
  62.  
  63.     def count_numbers(self, casks):
  64.         count = 0
  65.         for line in self.content:
  66.             for number in line:
  67.                 if number in casks:
  68.                     count += 1
  69.         return count
  70.  
  71. player_ticket = Ticket()
  72. computer_ticket = Ticket()
  73.  
  74. casks = []
  75.  
  76. for _ in range(90):
  77.     while True:
  78.         cask = random.randint(1, 90)
  79.         if cask not in casks:
  80.             break
  81.  
  82.     print('Новый бочонок: {} (осталось: {})'.format(cask, 90 - len(casks)))
  83.  
  84.     print('Билет игрока')
  85.     player_ticket.print(casks)
  86.  
  87.     print('\nБилет компьютера')
  88.     computer_ticket.print(casks)
  89.  
  90.     while True:
  91.         answer = input('Зачеркнуть цифру? (y/n)')
  92.         if answer in ['y', 'n']:
  93.             break
  94.  
  95.     print()
  96.  
  97.     if answer == 'y':
  98.         if not player_ticket.check_number(cask):
  99.             print('Вы проиграли, такого номера в билете нет')
  100.             break
  101.     else:
  102.         if player_ticket.check_number(cask):
  103.             print('Вы проиграли, номера есть в билете')
  104.             break
  105.  
  106.     casks.append(cask)
  107.  
  108.     if player_ticket.count_numbers(casks) == 15:
  109.         print('Вы победили')
  110.         break
  111.  
  112.     if computer_ticket.count_numbers(casks) == 15:
  113.         print('Вы проиграли, победил компьютер')
  114.         break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement