首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误消息: io.UnsupportedOperation:不可读

错误消息: io.UnsupportedOperation:不可读
EN

Stack Overflow用户
提问于 2019-01-09 05:15:13
回答 1查看 817关注 0票数 0

这是我创建的一个骰子游戏,我一直收到以下错误消息:

代码语言:javascript
复制
>   File "/Users/kc/PycharmProjects/programming project/dice game
> script/dice game.py", line 146, in <module>
>     main()   File "/Users/kc/PycharmProjects/programming project/dice game script/dice game.py", line 140, in main
>     leaderboard = get_leaderboard()   File "/Users/kc/PycharmProjects/programming project/dice game script/dice
> game.py", line 112, in get_leaderboard
> return [line.replace('\n', '') for line in l.readlines()] 
io.UnsupportedOperation: not readable

我不知道为什么会出现这条消息,我最初认为这是因为"Leaderboard.txt“被保存为w,所以我将其更改为r+文件,但消息不断出现。我认为这与以下内容有关:

代码语言:javascript
复制
return [line.replace('\n', '') for line in l.readlines()]

但我不知道它是什么。(我在下面附上了完整的代码)

完整计划:

代码语言:javascript
复制
import pickle
import random
import time

print("")
print("welcome to the dice game")
print("")

with open('users.pickle', 'rb') as f:
    users = pickle.load(f)

def login():

    logged_in = False

    username = input('please enter username: ')

    while not logged_in:

        if username in users:
            password = input("enter password: ")
            if password == users[username]:
                print("access granted")
                logged_in = True

        else:
            print("access denied")

    return logged_in

print("  ")

score_p_one = 0
score_p_two = 0

rounds = 0


def roll():
    die1 = random.randint(1, 6)
    die2 = random.randint(1, 6)
    change = 10 if (die1 + die2) % 2 == 0 else -5
    points = die1 + die2 + change
    if die1 == die2:
        points += random.randint(1, 6)
    return points


def game():
    player1_points = 0
    player2_points = 0
    for i in range(1, 6):
        player1_points += roll()
        print(f'After this round user1 you now have: {player1_points} Points')
        time.sleep(1)
        player2_points += roll()
        print(f'After this round user2 you now have: {player2_points} Points')
        time.sleep(1)

    player1_tiebreaker = 0
    player2_tiebreaker = 0
    if player1_points == player2_tiebreaker:
        while player1_tiebreaker == player2_tiebreaker:
            player1_tiebreaker = random.randint(1, 6)
            player2_tiebreaker = random.randint(1, 6)

    player2_win = False
    player1_win = (player1_points + player1_tiebreaker) \

    # > (player2_points, player2_tiebreaker)

    return (player1_points, player1_win), (player2_points, not player2_win)


def add_winner(winner):
    f = open('Winner.txt', 'a')
    with open('Winner.txt', 'a') as f:
        f.write('{winner[0]},{winner[1]}\n')

下面是错误消息所指向的位置

代码语言:javascript
复制
def get_leaderboard():
    f = open('Leaderboard.txt', 'w')
    with open('Leaderboard.txt', 'w') as l:
        return [line.replace('\n', '') for line in l.readlines()]


def update_leaderboard(leaderboard, winner):
    for idx, item in enumerate(leaderboard):
        if item.split(', ')[1] == winner[1] and int(item.split(', ')[0]) < int(winner[0]):
            leaderboard[idx] = '{}, {}'.format(winner[0], winner[1])
        else:
            pass
    leaderboard.sort(reverse=True)


def save_leaderboard(leaderboard):
    with open('Leaderboard.txt', 'r+') as f:
        for item in leaderboard:
            f.write(f"{item}\n")


def main():
    user1 = login()
    user2 = login()
    (player1, player1_win), (player2, player2_win) = game()
    if player1_win:
        winner = (player1, user1)
    else:
        winner = (player2, user2)
    print("Well done", winner[1], "you won with", winner[0] ,"Points")
    add_winner(winner)
    leaderboard = get_leaderboard()
    update_leaderboard(leaderboard, winner)
    save_leaderboard(leaderboard)


if __name__ == '__main__':
    main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 05:25:45

已解决:对不起,我的错只是一个简单的错误,没有授予Leaderboard.text的读写权限

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54099814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档