這個問題在這里已經有了答案: 在 python 中動態生成變數名 [重復] 6 個答案 昨天關門。
假設我想創建多個海龜,但也讓用戶決定有多少。有沒有辦法制作這樣的代碼?:
n = input()
for i in range(n):
'turtle' i = Turtle()
所以你最終會得到 n 個名為 'turtle1', 'turtle2', ... 'turtle n' 的海龜
uj5u.com熱心網友回復:
如果作為引數傳遞給exec()
函式,Python 可以執行以字串形式給出的命令。以下代碼可以滿足您的要求:
from turtle import Turtle
n = 5
for i in range(n):
exec('turtle' str(i) ' = Turtle()')
print(turtle4) # gives <turtle.Turtle object at 0x............>
但如果您不在代碼中以這種方式使用它并為此目的使用串列會更好。
from turtle import Turtle
n = 5
turtle_list = []
for i in range(n):
turtle_list.append(Turtle())
print(turtle_list[4]) # gives <turtle.Turtle object at 0x............>
有關此主題的更多資訊,請查看在 python 中動態生成變數名稱。
uj5u.com熱心網友回復:
您不應該以這種方式將它們分配給唯一變數,但您始終可以將它們存盤在串列中:
n = int(input())
turtles = []
for i in range(n):
turtles.append(Turtle())
然后你可以通過索引呼叫它們來對特定的海龜執行操作:
turtles[0].forward(100)
turtles[1].left(20)
uj5u.com熱心網友回復:
代碼問題
input() 回傳一個字串,而 range() 不接受字串。
"turtle" i 回傳一個不可變的字串物件,所以你不能做像 "apple" = "banana" 這樣的事情
解決方案
您可以使用串列來存盤海龜物件,并且可以使用 int() 將 input() 的結果轉換為 int。
import turtle
turtles = []
n = int(input())# convert input() into a int
for turtle in range(n):
turtles.append(Turtle())# append a turtle to the list each iteration
你可以像這樣訪問每個海龜的索引
turtles[0]# first turtle
turtles[1]# second turtle
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495165.html
上一篇:檢查特定位置是否存在多個檔案,如果是,則繼續執行代碼,否則重新運行上述代碼
下一篇:JS圖片庫僅更改為最后一張圖片