Guest User

Untitled

a guest
May 27th, 2016
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.17 KB | None | 0 0
  1. import pickle
  2. import os
  3. import time
  4. def instr():
  5.     print("Здесь всё просто. Я тебе исключение, а ты должен подобрать ему определение")
  6. def next_block(file):
  7.     os.system('cls')
  8.     tip=file.readline()
  9.     answers=[]
  10.     for i in range(4):
  11.         answers.append(file.readline())
  12.     otvet=file.readline()
  13.     if otvet:
  14.         otvet=otvet[0]
  15.     bal=file.readline()
  16.    
  17.     return tip, answers, otvet, bal
  18.    
  19. def menu():
  20.     os.system('cls')
  21.     print("""
  22.    0 - Выход
  23.    1 - Играть
  24.    2 - Посмотреть рекорды
  25.    3 - Удалить рекорд
  26.         """)
  27.     a=int(input())
  28.     if a==1:
  29.         return 1
  30.     if a==2:
  31.         return 2
  32.     if a==3:
  33.         return 3
  34.     if a==0:
  35.         return 0
  36.     else:
  37.         print("Неверный вод")
  38.  
  39. def z():
  40.     """Создаёт пустой массив в файле"""
  41.     rekords=[]
  42.     file=open("file.dat","ab")
  43.     pickle.dump(rekords,file)
  44.     file.close()
  45. def save_rekord(name,score):
  46.     d=[score,name]
  47.     file=open("file.dat","rb")
  48.     rekords=pickle.load(file)
  49.     rekords.append(d)
  50.     file.close()
  51.     file=open("file.dat","wb")
  52.     pickle.dump(rekords,file)
  53.     file.close()
  54. def proverka_imeni(name):
  55.     file=open("file.dat","rb")
  56.     rekords=pickle.load(file)
  57.     s=None
  58.     while s!=0:
  59.         s=0
  60.         for i in rekords:
  61.             if name==i[1]:
  62.                 s+=1
  63.         if s!=0:
  64.             print("Это имя занято! Выберите другое.")
  65.             name=input("Ваше имя:")
  66.     file.close()
  67.     return name
  68. def print_rekord():
  69.     n=0
  70.     file=open("file.dat","rb")
  71.     rekords=pickle.load(file)
  72.     rekords.sort(reverse=True)
  73.     for i in rekords:
  74.         n+=1
  75.         print(n,".",i[1],"-",i[0])
  76.     if rekords==[]:
  77.         print("Тут пусто")
  78.     file.close()
  79. def ask_yes_no(qwest):
  80.     a=input(qwest).lower()
  81.     while a not in("y","n"):
  82.         print("Неккоректный ввод")
  83.         a=input(qwest)
  84.     return a
  85. def del_rekord():
  86.     print_rekord()
  87.     file=open("file.dat","rb")
  88.     rekords=pickle.load(file)
  89.     rekords.sort(reverse=True)
  90.     file.close()
  91.     if rekords==[]:
  92.         print("Нажмите Enter, что бы вернуться ")
  93.         input("")
  94.     else:
  95.         print("Введите, через пробел, номера рекордов, которые хотите удалить.")
  96.         print("Или 0, если хотите удалить все рекорды.")
  97.         a=input("Номера рекордов:")
  98.         try:
  99.             if a!="0":
  100.                 b=a.split()
  101.                 while len(b)>len(rekords):
  102.                     print("Введено цифр больше чем рекордов.")
  103.                     print("Попробуйте ещё раз")
  104.                     a=input("Номера рекордов:")
  105.                     b=a.split()
  106.                 for i in range(len(b)):
  107.                     b[i]=int(b[i])
  108.                 b.sort(reverse=True)
  109.                 for i in b:
  110.                     i-=1
  111.                     del rekords[i]
  112.                 file=open("file.dat","wb")
  113.                 pickle.dump(rekords,file)
  114.                 file.close()
  115.             if a=="0":
  116.                 f=ask_yes_no("Вы уверенны? (y\\n)")
  117.                 if f=="y":
  118.                     for i in rekords:
  119.                         del i
  120.             print("Рекорды теперь выглядят так: ")
  121.             print_rekord()
  122.         except IndexError:
  123.             return 0
  124.         else:
  125.             return 1
  126.         print_rekord()
  127.         input("Нажмите Enter, чтобы вернуться")
  128.            
  129.            
  130. def main():
  131.     z()
  132.     a=menu()
  133.     while a!=0:
  134.         if a==1:
  135.             file=open("kek.txt","r",encoding='cp1251')
  136.             instr()
  137.             score=0
  138.             tip, answers, otvet, bal=next_block(file)
  139.             while tip:
  140.                 print(tip)
  141.                 for i in answers:
  142.                     print(i)
  143.                 vib=input("Ваш ответ:")
  144.                 if vib==otvet:
  145.                     print("Верно.\n +",bal," очков")
  146.                     score+=int(bal)
  147.                 else:
  148.                     print("Неверно")
  149.                     print("Верный ответ - ",otvet)
  150.                 time.sleep(2)
  151.                 tip, answers, otvet, bal=next_block(file)
  152.             file.close()
  153.             print("Вы набрали ",score," балов")
  154.             v=ask_yes_no("Хотите сохранить результат?(y\\n)")
  155.             if v=="y":
  156.                 name=input("Введите своё имя:")
  157.                 new_name=proverka_imeni(name)
  158.                 save_rekord(new_name,score)
  159.         if a==2:
  160.             print_rekord()
  161.             input("Нажмите Enter, чтобы вернуться")
  162.         if a==3:
  163.             dyrak=del_rekord()
  164.             while dyrak==0:
  165.                 print("Я ЖЕ СКАЗАЛ ЧЕРЕЗ ПРОБЕЛ")
  166.                 dyrak=del_rekord()
  167.         a=menu()
  168.        
  169. main()
Add Comment
Please, Sign In to add comment