2016-11-24 25 views
6

Tôi tương đối mới ở đây, vì vậy xin vui lòng cho tôi biết nếu có bất cứ điều gì tôi nên biết hoặc bất kỳ sai lầm tôi đang làm theo cách khôn ngoan!Thêm phần tử vào từ điển trong python?

Tôi đang cố gắng thêm mọi thứ vào từ điển thông qua lựa chọn ngẫu nhiên, nhưng mã của tôi dường như không hoạt động!

Các tập tin: sports.txt

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

mã của tôi cho đến nay:

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() 

Tôi cố gắng để cho phép người dùng nhập tên của họ và nhóm ưa thích thể thao, và bất cứ môn thể thao họ thích sẽ có cơ hội được chọn ngẫu nhiên cao hơn những người khác (ví dụ nếu Jason chọn bóng đá, cơ hội nhận bóng của anh ấy có thể tăng gấp đôi).

Tôi không mong đợi bất cứ ai viết mã cho tôi, tôi biết nó tốn thời gian và bạn có những việc tốt hơn để làm! Nhưng bất cứ ai có thể giải thích cho tôi làm thế nào tôi sẽ đi về việc này? Tôi hiểu làm thế nào để thực hiện lựa chọn ngẫu nhiên nhưng tôi không biết làm thế nào tôi sẽ "tăng gấp đôi" cơ hội.

Ngoài ra tôi cứ bị lỗi này khi chạy mã của tôi: NameError: global name 'random' is not defined

Tôi nghĩ rằng tôi đã làm điều đó một phần đúng, nhưng bây giờ tôi đang mắc kẹt. Bất cứ ai có thể cho hai xu của họ về điều này?

+0

Bạn cần phải nhập khẩu các mô-đun ngẫu nhiên. Chỉ cần thêm mã này vào đầu mã của bạn: 'nhập ngẫu nhiên'. Điều đó sẽ chăm sóc lỗi anyway. –

+0

ohhh Tôi hiểu rồi! Cảm ơn bạn!! – Typhoon2

Trả lời

1

Hãy thử điều này:

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) 

này sẽ làm tăng cơ hội của môn thể thao ưa thích để được chọn bởi 2.

Và đừng quên để import random

+0

Cảm ơn bạn đã giải thích cách thực hiện điều đó! Bây giờ tôi sẽ tùy chỉnh nó để phù hợp với nhu cầu của tôi! – Typhoon2

0

Tôi giả sử bạn đang cố gắng sử dụng random.choice từ python random.choice

bạn cần đảm bảo rằng tệp được nhập ở đầu tệp của bạn:


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) 
+0

cảm ơn bạn đã chỉ ra điều đó! Tôi hoàn toàn quên về điều đó! – Typhoon2

Các vấn đề liên quan