Добавление элемента в словарь на python?

Я относительно новичок здесь, поэтому, пожалуйста, скажите мне, есть ли что-нибудь, что я должен знать, или какие-либо ошибки, которые я делаю мудрым образом!

Я пытаюсь добавить вещи в словарь через случайный выбор, но мой код, похоже, не работает!

файл: спортивный.txt

Soccer, Joshua
Lacrosse, Naome Lee
Soccer, Kat Valentine
Basketball, Huong
Tennis, Sunny
Basketball, Freddie Lacer

мой код до сих пор:

def sportFileOpen():

    sportFile = open("sport.txt")
    readfile = sportFile.readlines()
    sportFile.close()
    return(readfile)


def sportCreateDict(sportFile):

    sportDict = {}

    for lines in sportFile:
        (sport, name) = lines.split(",")

        if sport in sportDict:
            sportDict[sport].append(name.strip())

        else:
            sportDict[sport] = [name.strip()]


    return(sportDict)



def sportRandomPick(name, sport, sportDict):


    if sport in sportDict:

        ransport = random.choice(sportDict.keys())

        sportDict[ransport].append(name)


        print(name, "has been sorted into", ransport)


def main():

    sportFile = sportFileOpen()

    sportDict = sportCreateDict(sportFile)


    name = input("Enter the name: ")

    preferredSport = input("Which sport do they want? ")

    sportRandomPick(name, preferredSport, sportDict)


main()

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

Я не ожидаю, что кто-то напишет код для меня, я знаю, что это занимает много времени, и у вас есть лучшие вещи! Но может ли кто-нибудь объяснить мне, как я буду это делать? Я понимаю, как делать случайный выбор, но я не знаю, как бы я "удвоил" шансы.

также я продолжаю получать эту ошибку при запуске моего кода: NameError: global name 'random' is not defined

Я думал, что делаю это правильно, но теперь я застрял. Кто-нибудь может дать свои два цента на это?

2 ответов


попробуйте это:

def sportRandomPick(name, sport, sportDict):
    if sport in sportDict:
        ransport = random.choice(list(sportDict.keys()) + [sport]) # list of sports will contain preferred sport twice.

        sportDict[ransport].append(name)

        print(name, "has been sorted into", ransport)

Это увеличит шансы предпочтительного вида спорта, который будет выбран 2.

Не забудьте import random


Я предполагаю, что вы пытаетесь использовать random.choice С python random.выбор

вы должны убедиться, что его импорта в верхней части файла:


import random

def sportRandomPick(name, sport, sportDict):


    if sport in sportDict:

        ransport = random.choice(sportDict.keys())

        sportDict[ransport].append(name)


        print(name, "has been sorted into", ransport)