我想将数据写入文本文件,如果现有文件超过20行,则再次覆盖

问题描述 投票:-1回答:1

保持玩家玩游戏每一轮的高分。如果分数高高于高分列表中的一项,请更新高分列表。高分榜应该跟踪多达20个高分。这是编码

我是Python的初学者,我不了解某些功能。您可以在thank()函数中检查这些代码

# Python program for jumbled words game.
# import random module
import random
# function for choosing random word.
def choose():
    # list of word
    words = open('words.txt').read().splitlines()

    # choice() method randomly choose
    # any word from the list.
    pick = random.choice(words)
    return pick
# Function for shuffling the
# characters of the chosen word.
def jumble(word):
    # sample() method shuffling the characters of the word
    random_word = random.sample(word, len(word))
    # join() method join the elements
    # of the iterator(e.g. list) with particular character .
    jumbled = ''.join(random_word)
    return jumbled
# Function for showing final score.
def thank(p1n, p2n, p1, p2):
    print(p1n, 'Your score is :', p1) #one
    f = open("high_scores.txt", "a")
    print(p1n, 'Your score is :', p1, file=f)
    f.close()

    print(p2n, 'Your score is :', p2) #two
    f = open("high_scores.txt", 'r+')
    print(p2n, 'Your score is :', p2, file=f)

    # check_win() function calling
    check_win(p1n, p2n, p1, p2)
    print('Thanks for playing...')
# Function for declaring winner
def check_win(player1, player2, p1score, p2score):
    if p1score > p2score:
        print("winner is :", player1)

    elif p2score > p1score:
        print("winner is :", player2)

    else:
        print("Draw..Well Played guys..")

# Function for playing the game.
def play():
    # enter player1 and player2 name
    p1name = input("player 1, Please enter your name :")
    p2name = input("Player 2 , Please enter your name: ")
    # variable for counting score.
    pp1 = 0
    pp2 = 0
    # variable for counting turn
    turn = 0
    # keep looping
    while True:
        # choose() function calling
        picked_word = choose()
        # jumble() fucntion calling
        qn = jumble(picked_word)
        print("jumbled word is :", qn)
        # checking turn is odd or even
        if turn % 2 == 0:
            # if turn no. is even
            # player1 turn
            print(p1name, 'Your Turn.')
            ans = input("what is in your mind? ")
            # checking ans is equal to picked_word or not
            if ans == picked_word:
                # incremented by 1
                pp1 += 1
                print('Your score is :', pp1)
                turn += 1
            else:
                print("Better luck next time ..")
                # player 2 turn
                print(p2name, 'Your turn.')
                ans = input('what is in your mind? ')
                if ans == picked_word:
                    pp2 += 1
                    print("Your Score is :", pp2)
                else:
                    print("Better luck next time...correct word is :", picked_word)
                c = int(input("press 1 to continue and 0 to quit :"))
                # checking the c is equal to 0 or not
                # if c is equal to 0 then break out
                # of the while loop o/w keep looping.
                if c == 0:
                    # thank() function calling
                    thank(p1name, p2name, pp1, pp2)
                    break
        else:
            # if turn no. is odd
            # player2 turn
            print(p2name, 'Your turn.')
            ans = input('what is in your mind? ')
            if ans == picked_word:
                pp2 += 1
                print("Your Score is :", pp2)
                turn += 1
            else:
                print("Better luck next time.. :")
                print(p1name, 'Your turn.')
                ans = input('what is in your mind? ')
                if ans == picked_word:
                    pp1 += 1
                    print("Your Score is :", pp1)
                else:
                    print("Better luck next time...correct word is :", picked_word)
                    c = int(input("press 1 to continue and 0 to quit :"))
                    if c == 0:
                        # thank() function calling
                        thank(p1name, p2name, pp1, pp2)
                        break
            c = int(input("press 1 to continue and 0 to quit :"))
            if c == 0:
                # thank() function calling
                thank(p1name, p2name, pp1, pp2)
                break
# Driver code
if __name__ == '__main__':
    # play() function calling
    play()
python save leaderboard
1个回答
0
投票

我相信您距离答案并不遥远,因为您知道如何读写文件。这是一个例子:

def update_high_score_file(f_name, score_keep_maxn, new_score):
    """

    :param f_name:              read and write-out file name
    :param score_keep_maxn:     how many max scores you want to record
    :param new_score:           the new score
    :return:
    """
    # read current scores
    with open(f_name, 'r') as f:
        lines = f.readlines()
    scores = [int(line.strip()) for line in lines if line.strip() != '']

    # update
    scores = scores + [new_score]
    scores = sorted(scores, reverse=True)
    scores = scores[:score_keep_maxn]

    # write out new scores
    scores = [str(s)+'\n' for s in scores]
    with open(f_name, 'w') as f:
        f.writelines(scores)
© www.soinside.com 2019 - 2024. All rights reserved.