我寫了一些代碼來生成一個簡單的字符(比如故事字符,而不是字符),我的問題是我希望我的程式生成多個字符,但是在運行我的代碼時,它只是多次列印出相同的名稱。
我必須檔案,字符類所在的檔案和我運行代碼的檔案。
我相信給我的問題的代碼是以下代碼:
```
from charClasses import Character
from charClasses import *
male_names = ["Xi", "Gonduang", "Lei", "Bei", "Guan"]
female_names = ["Song", "Wen", "Meihui", "Qiang", "Ling"]
surnames = ["Jin", "Ling", "Ma", "Yeun", "Kim"]
genders = ["Male", "Female"]
for t in range(3):
randGender = random.choice(genders)
if randGender == "Male":
randName = random.choice(male_names)
else:
randName = random.choice(female_names)
randSurname = random.choice(surnames)
randAge = random.randrange(0, 100)
characters = [Character(randName, randSurname, randAge, randGender) for x in range(3)]
for character in characters:
character.print_char_info()
```
這是我的代碼:
https://pastebin.com/suTampyw
https://pastebin.com/7DTk9JSq
我想我知道問題出在哪里,我認為我將隨機生成代碼放在錯誤的位置,但我似乎無法解決如何解決它。
我將如何修復我的代碼?
uj5u.com熱心網友回復:
問題是您創建字符陣列的第二個檔案中的第 19 行。
characters = [Character(randName, randSurname, randAge, randGender) for x in range(3)]
該陳述句本質上是在創建 3 個字符物件,其值存盤在 randName、randSurname、randAge 和 randGender 中。在您在第 9 行定義的 for 回圈的下一次迭代之前,這些值不會改變。
您應該在迭代之前創建一個空字串列并將每個字符附加到它,因為正如您的代碼現在所代表的那樣,它在 for 回圈的每次迭代中創建一個字串列。
characters = []
for t in range(3):
randGender = random.choice(genders)
if randGender == "Male":
randName = random.choice(male_names)
else:
randName = random.choice(female_names)
randSurname = random.choice(surnames)
randAge = random.randrange(0, 100)
characters.append(Character(randName, randSurname, randAge, randGender))
uj5u.com熱心網友回復:
您僅使用最新的隨機生成的資料來創建您的characters串列。相反,您應該在每次迭代時追加到串列中。試試下面的:
characters = list()
for t in range(3):
randGender = random.choice(genders)
if randGender == "Male":
randName = random.choice(male_names)
else:
randName = random.choice(female_names)
randSurname = random.choice(surnames)
randAge = random.randrange(0, 100)
characters.append(Character(randName, randSurname, randAge, randGender))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/481520.html
