添加值SET python

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

我开始自己学习Python,我四处搜寻,但找不到解决方案,

这是彩票代码的练习,我想问用户几个问题。它仍在练习中。

我尝试构建“ add_players()”部分。

所以,我的代码是现在

user_players = set()

lottery_numbers = {13, 21, 22, 5, 8}

def menu():
    user_input = input("ADD,SHOW,ROLL or QUIT  ")
    user_input=user_input.upper()

    while user_input != 'QUIT':
        if user_input == 'ADD':
            add_players()
        #elif user_input == 'SHOW':
        #   show_players()
        elif user_input == 'ROLL':
            roll()
        else:
            print('Done bye')
        user_input = input("ADD,SHOW,ROLL or QUIT ")


def add_players():
    name_input = input('Name?: ')
    numbers_input = int(input('number?: '))

    new_users = user_players.add(
        {
            'name': name_input,
            'numbers': numbers_input
        }
    )
def roll():
    for i in new_users:
        Matched1 = i['numbers'].intersection(lottery_numbers)
        print("{} matched {} ".format(i['name'], Matched1))

menu()

因此,当用户选择“ ADD”时,

我想向我的SET添加值

这是逻辑

def add_players():
        name_input = input('Name?: ')
        numbers_input = int(input('number?: '))

        new_users = user_players.add(
            {
                'name': name_input,
                'numbers': numbers_input
            }
        )

例如,

约翰1,2,3,4,5

我知道我应该使用添加功能,但是

我缺少这部分

 new_users = user_players.add(
                {
                    'name': name_input,
                    'numbers': numbers_input
                }
            )

我如何更改代码以添加玩家及其编号?因此,当用户选择“ ROLL”时,它显示为“ John匹配5”]

python
1个回答
2
投票
{
    'name': name_input,
    'numbers': numbers_input
}

无法添加到集合中,因为字典不可哈希。尝试使用可散列的数据结构(例如元组)以适合您的情况。

例如,

new_users = user_players.add((name_input, numbers_input))

也用于滚动功能,请参考该功能中不可访问的new_users。您在new_users函数中声明的add_players仅存在于该函数内部。因此,您想在其他位置声明它,就像在user_players下方,然后随便添加它。

© www.soinside.com 2019 - 2024. All rights reserved.