Найти - Пользователи
Полная версия: помогите с кодом
Начало » Python для новичков » помогите с кодом
1
Samscara
Добрый день!
Имеется задача: создать викторину, записывать рекорды в текстовый файл, викторину создал, в файл .dat записывает легко, в текстовый никак
вот сама прога:
import sys
def open_file(file_name, mode):
    try:
        the_file = open(file_name, mode)
    except IOError as f:
        print("Невозможно открыть файл", file_name, f)
        input("Чтобы выйти нажмите enter")
        sys.exit()
    else:
        return the_file
def next_line(the_file):
    line = the_file.readline()
    line = line.replace("/", "\n")
    return line
def next_block(the_file):
    category = next_line(the_file)
    question = next_line(the_file)
    answers = []
    for i in range(4):
        answers.append(next_line(the_file))
    correct = next_line(the_file)
    if correct:
        correct = correct[0]
    nominal = next_line(the_file)
   
    
    explain = next_line(the_file)
    return category, question, answers, correct, nominal, explain
def welcome(title):
    print("Добро пожаловать в викторину")
    print(title)
def main():
    scores = []
    choice = None
    while choice != 0:
        print(
        """
        ===Викторина===
        1 - начать игру
        2 - посмотреть рекорды
        """
        )
        choice = input("Ваш выбор: ")
        if choice == "1":
            name = input("Введите имя: ")
            trivia_file = open_file("the_trivia.txt", "r")
            title = next_line(trivia_file)
            welcome(title)
            score = 0
            category, question, answers, correct, nominal, explain = next_block(trivia_file)
            while category:
                print(category)
                print(question)
                for i in range(4):
                    print(i + 1, "-", answers[i])
                print("за правильный ответ вы можете получить ", nominal, "баллов")
                answer = input("Ваш ответ: ")
                if answer == correct:
                    print("Правильно!", end=" ")
                    score += int(nominal)
                else:
                    print("неверный ответ!", end=" ")
                print(explain)
                print("Счет: ", score)
                category, question, answers, correct, nominal, explain = next_block(trivia_file)
            trivia_file.close()
            print("это был последний вопрос")
            print("Вы набрали ", score, "баллов")
            if score >= 3:
                print("Вы настоящий пипетковод, поздравляю!")
            else:
                print("Вам еще стоит кое-чему поучиться у пипетководов")
            entry = (name, score)
            scores.append(entry)
            f = open("trivia.txt", "w")
            f.writelines(scores)
            f.close()
            
        elif choice == "2":
            f = open("trivia.txt", "r")
            print(f.read())
main()
input("Чтобы выйти нажмите Enter")
            
цикл с вопросами/ответами проходит на ура, но как дело доходит до записи выдает ошибку:
f.writelines(scores)
TypeError: write() argument must be str, not tuple
Помогите, бьюсь вторые сутки
ZerG
tuple = (some, data, strin)
string = ‘some data string’
tupe 2 string = ''.join(tuple)
Samscara
ZerGух ты, а вот этого я еще не проходил, я так понимаю здесь список/кортеж превращается в строку?
последняя строчка тоже не очень понятна
а еще такой момент: разве не должен список записываться в текстовый файл через метод writelines()?
ZerG
writelines - хочет писать строку - а вы вместо строки даете ему кортеж.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB