Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pickle
- import os
- import time
- def instr():
- print("Здесь всё просто. Я тебе исключение, а ты должен подобрать ему определение")
- def next_block(file):
- os.system('cls')
- tip=file.readline()
- answers=[]
- for i in range(4):
- answers.append(file.readline())
- otvet=file.readline()
- if otvet:
- otvet=otvet[0]
- bal=file.readline()
- return tip, answers, otvet, bal
- def menu():
- os.system('cls')
- print("""
- 0 - Выход
- 1 - Играть
- 2 - Посмотреть рекорды
- 3 - Удалить рекорд
- """)
- a=int(input())
- if a==1:
- return 1
- if a==2:
- return 2
- if a==3:
- return 3
- if a==0:
- return 0
- else:
- print("Неверный вод")
- def z():
- """Создаёт пустой массив в файле"""
- rekords=[]
- file=open("file.dat","ab")
- pickle.dump(rekords,file)
- file.close()
- def save_rekord(name,score):
- d=[score,name]
- file=open("file.dat","rb")
- rekords=pickle.load(file)
- rekords.append(d)
- file.close()
- file=open("file.dat","wb")
- pickle.dump(rekords,file)
- file.close()
- def proverka_imeni(name):
- file=open("file.dat","rb")
- rekords=pickle.load(file)
- s=None
- while s!=0:
- s=0
- for i in rekords:
- if name==i[1]:
- s+=1
- if s!=0:
- print("Это имя занято! Выберите другое.")
- name=input("Ваше имя:")
- file.close()
- return name
- def print_rekord():
- n=0
- file=open("file.dat","rb")
- rekords=pickle.load(file)
- rekords.sort(reverse=True)
- for i in rekords:
- n+=1
- print(n,".",i[1],"-",i[0])
- if rekords==[]:
- print("Тут пусто")
- file.close()
- def ask_yes_no(qwest):
- a=input(qwest).lower()
- while a not in("y","n"):
- print("Неккоректный ввод")
- a=input(qwest)
- return a
- def del_rekord():
- print_rekord()
- file=open("file.dat","rb")
- rekords=pickle.load(file)
- rekords.sort(reverse=True)
- file.close()
- if rekords==[]:
- print("Нажмите Enter, что бы вернуться ")
- input("")
- else:
- print("Введите, через пробел, номера рекордов, которые хотите удалить.")
- print("Или 0, если хотите удалить все рекорды.")
- a=input("Номера рекордов:")
- try:
- if a!="0":
- b=a.split()
- while len(b)>len(rekords):
- print("Введено цифр больше чем рекордов.")
- print("Попробуйте ещё раз")
- a=input("Номера рекордов:")
- b=a.split()
- for i in range(len(b)):
- b[i]=int(b[i])
- b.sort(reverse=True)
- for i in b:
- i-=1
- del rekords[i]
- file=open("file.dat","wb")
- pickle.dump(rekords,file)
- file.close()
- if a=="0":
- f=ask_yes_no("Вы уверенны? (y\\n)")
- if f=="y":
- for i in rekords:
- del i
- print("Рекорды теперь выглядят так: ")
- print_rekord()
- except IndexError:
- return 0
- else:
- return 1
- print_rekord()
- input("Нажмите Enter, чтобы вернуться")
- def main():
- z()
- a=menu()
- while a!=0:
- if a==1:
- file=open("kek.txt","r",encoding='cp1251')
- instr()
- score=0
- tip, answers, otvet, bal=next_block(file)
- while tip:
- print(tip)
- for i in answers:
- print(i)
- vib=input("Ваш ответ:")
- if vib==otvet:
- print("Верно.\n +",bal," очков")
- score+=int(bal)
- else:
- print("Неверно")
- print("Верный ответ - ",otvet)
- time.sleep(2)
- tip, answers, otvet, bal=next_block(file)
- file.close()
- print("Вы набрали ",score," балов")
- v=ask_yes_no("Хотите сохранить результат?(y\\n)")
- if v=="y":
- name=input("Введите своё имя:")
- new_name=proverka_imeni(name)
- save_rekord(new_name,score)
- if a==2:
- print_rekord()
- input("Нажмите Enter, чтобы вернуться")
- if a==3:
- dyrak=del_rekord()
- while dyrak==0:
- print("Я ЖЕ СКАЗАЛ ЧЕРЕЗ ПРОБЕЛ")
- dyrak=del_rekord()
- a=menu()
- main()
Add Comment
Please, Sign In to add comment