2016-05-07 8 views
-2

Я сделал арифметическую викторину, которая задает вам десять вопросов и класс, в котором вы находитесь. Пользователь вставляет туда имя и вводит 1,2 или 3. Затем он спрашивает пользователя десять вопросов, но в конце он сохранит данные, которые являются именем и оценками пользователя в .txt-файле, называемом Class1Score, Class2Score или Class3Score.Как заказать .txt файлы

Вот мой код, который показывает арифметический тест:

import time 
import math 
import random 
print("Title:Arithmetic Quiz") 
print("*************************************************************") 

print("This program will ask you to complete the arithmetic quiz.") 
print("The program has 10 questions. You will recieve feedback after.") 
print("____________________________________________________________" 
while True: 
    UserName = input("What is your name?:") 
    if not UserName.isalpha(): 
     print("Error!Please enter your name using letters. ") 
     continue 
    else: 
     break 
ClassSelection= input("Please enter what Class you are in?:1, 2 or 3") 
ClassChosen=0 
while ClassChosen==0: 
    if ClassSelection=="1": 
     ClassChosen=1 
    elif ClassSelection=="2": 
     ClassChosen=1 
    elif ClassSelection=="3": 
     ClassChosen=1 
    else: 
     print("You must write 1, 2, or 3.") 
     ClassSelection=input("Enter the class you are in") 


print(UserName," welcome to the Arithmetic Quiz.") 
print("____________________________________________") 
print("The quiz will begin in 3 seconds") 
time.sleep(2) 
for i in range(0,3): 
    print (3 - i) 
    time.sleep(1) 
print("Begin!") 
print("*****************************************") 


#___________________________________________________________________________________________________________________________________ 
RecentStudent= [0,0,0] 
def MathsQuiz(): 
    score=0 
    for questionNum in range(10): 
     Num1= random.randint (1, 10) 
     Num2= random.randint (1, 10) 
     Symbol = ["+","-","*"] 
     Operation = random.choice(Symbol) 
     RealAnswer= int(eval(str(Num1)+Operation+str(Num2))) 

     print("Please give an answer for:", Num1, Operation, Num2)  
     UserAnswer = int(input("Enter your answer here:")) 
     if UserAnswer == RealAnswer: 
      score = score + 1 
      print("You are correct! :D") 
      print("_______________________________________________") 
     else: 
      print("You are incorrect! :(") 
      print("The answer was", RealAnswer) 
      print("________________________________________________") 
    print() 
    print("__________________________________________________") 
    print("Thank you for completing the quiz!") 
    print("Your Score is loading") 
    import time 
    time.sleep(2) 
    print(UserName,"In this test you achieved",score,"/10") 
    print() 
    del RecentStudent[0] 
    RecentStudent.append(score) 
    print("Your three most recent scores are:",RecentStudent) 
    print("********************************************************") 
def Resit1(): 
    Resit1=input("Do you want to resit the test? Yes or No?:") 


    if Resit1== "Yes" or Resit1=="yes": 
     MathsQuiz() 


def Resit2(): 
    Resit2=input("Do you want to resit the test? Yes or No?:") 


    if Resit2== "Yes" or Resit2=="yes": 
     MathsQuiz() 
     print("Quiz Finished") 


#____________________________________________________________________________________________________________________________________________________________   
MathsQuiz() 
Resit1() 
Resit2() 
if ClassSelection=="1": 
    Class1 = [] 
    Class1.append("Student: ") 

    Class1.append(UserName) 
    Class1.append("Latest 3 Scores: ") 
    Class1.append(RecentStudent) 


    file = open("Class1Scores.txt", 'a') 


    file.write(str(Class1)) 


    file.write("\n") 
    file.close() 

elif ClassSelection=="2": 
    Class2=[] 
    Class2.append("Student: ") 

    Class2.append(UserName) 
    Class2.append("Latest 3 Scores: ") 
    Class2.append(RecentStudent) 


    file = open("Class2Scores.txt", 'a') 

    file.write(str(Class2)) 



    file.write("\n") 
    file.close() 


elif ClassSelection==3: 
    Class3 = [] 
    Class3.append("Student: ") 
    Class3.append(UserName) 
    Class3.append("Latest 3 Scores: ") 
    Class3.append(RecentStudent) 


    file = open("Class3Scores.txt", 'a') 


    file.write(str(Class3)) 

    file.write("\n") 
    file.close() 

То, что я хотел сделать после того, как результаты сохраняются в файле спросить у пользователя, какие данные они хотели бы видеть. Данные, которые пользователь видит, являются самыми высокими, результатом являются самый низкий результат, средний балл, имена в алфавитном порядке и наивысшие баллы от каждого класса. Я использовал фиктивные значения, которые сохраняли бы последние три оценки пользователя в файле в формате 1,2,10.

Вот пример того, что вывод в файл .txt, когда я сохранить результаты в ней:

['Student: ', 'clive', 'Latest 3 Scores: ', [0, 0, 0]] 

Это формат экономит как я не знаю, как сортировать результаты в типы данных нового сортировщика программ.

+1

Вы можете прочитать [PEP8 руководство питона стиль] (https://www.python.org/dev/peps/pep-0008/), любой, кто должен прочитать ваш код, поблагодарит вас за это. Как написано сейчас, ваш код почти не читается. –

+0

Сортировка файла в 1980-х годах вы думали использовать sqlite? Если вы не хотите этого делать, самым простым было бы прочитать весь файл в памяти и передать его для сортировки с подходящей ключевой функцией. – e4c5

+0

@ e4c5 не могли бы вы помочь мне сделать это? – juniour

ответ

0

Если вы хотите сохранить данные в файле, вам нужно выбрать формат файла, который способен сериализовать данные. Два наиболее распространенных из них для питона является json и pickle

import json 

data = ['name', 'John Doe', 'scores', [1,2,3]] 

# Serializes data and write it to file 
with open('/path/to/file.txt', 'w') as f: 

    json.dump(data, f) 

# Read the data back in 
with open('/path/to/file.txt', 'r') as f: 
    read_data = json.load(f) 

print(read_data) 
# ['name', 'John Doe', 'scores', [1,2,3]] 
+0

Эй, где бы этот код пошел и что бы это сделал? – juniour

Смежные вопросы