2015-11-06 115 views
0

所以這裏是我的問題,我有一個由程序隨機生成的字符列表。 我希望每個角色都有對彼此的感受。在列表中生成一個字典

這是到目前爲止我的代碼:

import random 

# create characters 

class CHARACTER: 
    def __init__(self, name, surname, age, sexe, pragmatism, 
     courage, intelligence, shyness, happiness, fear, hunger, 
     comfort, feeling): 
     self.name = name 
     self.surname = surname 
     self.age = age 
     self.sexe = sexe 
     self.pragmatism = pragmatism 
     self.courage = courage 
     self.intelligence = intelligence 
     self.shyness = shyness 
     self.happiness = happiness 
     self.fear = fear 
     self.hunger = hunger 
     self.comfort = comfort 
     self.feeling = feeling 


characters = [] # list that will contain all the characters 
feelingslist = [] 
sexe = ["Male", "Female"] 

mname = ["John", "Mike", "Albert", "Henry", "Patrick", "Francis", 
"Robert", "Simon", "Charles", "Charlie", "Connor", "Adam", "Blake", 
"Steven", "Edward", "Andrew", "Joe", "Gregory", "Brian", "Anthony", 
"Frank", "Billy", "Boris", "Edgar", "Elliott", "Erik", "Liam", "Kyron", 
"Ned", "Neil", "Ricky", "Ross", "Rich", "Roy", "Preston", "William", 
"Vladimir", "Zach", "Wyatt", "Tylor", "Thomas", "Spike"] 

fname = ["Alessia", "Ally", "Bridgette", "Callie", "Jessica", 
"Debora", "Diana", "Elizabeth", "Clair", "Fran", "Hannah", 
"Helene", "Marie", "Laura", "Leslie", "Leyla", "Kiley", 
"Margaret", "Lola", "Maryjane", "Megan", "Rose", "Sofia", 
"Samantha", "Teresa", "Yolanda", "Teri", "Vicky", "Tricia", 
"Rose", "Rita", "Nita", "Paola", "Penelope", "Polly", 
"Nathalie", "Melody", "Morgane"] 

lname = ["Smith", "Johnson", "Williams", "Jones", "Brown", "Miller", 
"Moore", "Taylor", "Thomas", "White", "Harris", "Thompson", "Garcia", 
"Allen", "Lewis", "Hall", "Young", "Clark", "Hill", "Lopez", "Carter", 
"Turner", "Collins", "Evans", "Campbell", "Nelson", "Parker", "Green", 
"Black", "Green", "Lee", "Martin"] 


# the code below create 10 male and 10 female characters 
# and puts them in the characters list. 


for i in range(20): 
    character = CHARACTER(random.choice(mname), 
    random.choice(lname), random.randint(1,10), 
    random.choice(sexe), random.randint(1,10), random.randint(1,10), 
    random.randint(1,10), random.randint(1,10), 
    random.randint(1,10), random.randint(1,10), 
    random.randint(1,10), random.randint(1,10), {}) 

    characters.append(character) 
    i += 1 

# assigning sexe to characters 

for character in characters: 
    if character.sexe == "Female": 
     character.name = random.choice(fname) 

# feelings 

for character in characters: 
    for character in characters: 
     character.feeling[id(character)] = 5 

# for each character in characters: 
# add one feeling for each character 

# printing characters 

for character in characters: 
    print character.name 
    print character.surname 
    print character.sexe 
    print id(character) 
    print character.feeling 
    print " " 

現在我的這個問題是,該方案只增加了這樣每個字符中的一個條目:

莫嘉娜 加西亞 女 { 44880880:5}

因此,每個角色都有自己的「感覺詞典」條目,但不適用於其他人。 我想爲每個詞典在程序中爲每一個其他字符都有一個條目(所以每個字符都有關於所有其他字符的意見)

回答

1

在你的循環中設置感受,你正在使用相同的變量character)來控制兩個循環;他們需要是不同的變量。

例如:

for char1 in characters: 
    for char2 in characters: 
     char1.feeling[id(char2)] = 5 
-1

所以我應該做這樣的事情:

characters_len = len(characters) 

for character in characters: 
    for i in range(characters_len): 
     character.feeling[id(character)] = 5 
     i+=1 

+0

號上:你仍然在用'人物'來識別誰的感覺正在被設定,以及那個感覺是誰。並且不要明確地改變'i'; 「for」已經在考慮這一點。 –

+0

好吧,我看到了什麼問題,但我不知道如何修復它......你將如何編碼它,讓程序明白它必須遍歷每個字符的所有字符? – Gobhniu

0

好吧,我終於解決了這一點,以防萬一有人用同樣的問題在這裏讀出的題目是我的解決方案:

characters_len = len(characters) 

for character in characters: 
    for i in range(characters_len): 
     character.feeling[id(characters[i])] = 5 

謝謝你的答案,並把我在正確的道路