我正在嘗試學習 python,我剛剛通過了條件陳述句,我正在努力創建自己的函式。
你介意告訴我我做錯了什么,我必須在最后寫一個復雜的列印陳述句,一個一個地呼叫我的所有函式嗎?
此外,任何風格提示也將不勝感激。
提前感謝您提供的任何東西。
import random
#VARIABLES
topChamps = ['Nasus', 'Garen', 'Nautilus']
botChamps = ['Draven', 'Caitlyn', 'Jhin']
midChamps = ['Lux', 'Veigar', 'Karthus']
supChamps = ['Sona', 'Tahm Kench', 'Alistar']
jgChamps = ['Amumu', 'Rammus', 'Malphite']
selectNum = 0
roleNum = 0
champArr = []
champ = "wrong"
role = str(input("what role did you get? "))
#function to make the role choice easier for computer to read
def roleChoose():
if role == "top":
roleNum = 1
elif role == "bot":
roleNum = 2
elif role == "mid":
roleNum = 3
elif role == "sup":
roleNum = 4
elif role == "jg":
roleNum = 5
return roleNum
#function that determines what role list to use for champion choice
def arrayGrab(Num):
if Num == 1:
champArr = topChamps
elif Num == 2:
champArr = botChamps
elif Num == 3:
champArr = midChamps
elif Num == 4:
champArr = supChamps
elif Num == 5:
champArr = jgChamps
return champArr
print("made it to the end but you messed up")
#function that pulls a random name from champ list
def charSelect(arr):
x = random.randrange(0,2)
champ = arr[x]
return champ
print(charSelect(arrayGrab(roleChoose())))
uj5u.com熱心網友回復:
IIUC,你可以像這樣取消你的列印:
role = roleChoose()
grab = arrayGrab(role)
char = charSelect(grab)
print(char)
在賦值的左側使用您喜歡的任何變數名稱。
uj5u.com熱心網友回復:
在 python 程式中有不同的命名空間。比如有全域命名空間,每個函式也有自己的命名空間。在您的程式中,在不同的背景關系中使用相同的變數名,但這些變數不共享。
考慮這個程式:
roleNum = 0
def roleChoose():
roleNum = 1
return roleNum
roleChoose()
第一個 roleNum 是一個全域變數。當呼叫 roleChoose 時,會創建一個新的命名空間。roleChoose 中的所有新變數都被限制在這個命名空間中。當函式回傳時,它保持全域 roleNum 不變。
為了檢索變數的值,python 解釋器將首先檢查本地命名空間,然后是外部命名空間。因此,如果全域變數沒有被區域變數掩蓋,則可以使用它。IE
role = "top"
def roleChoose():
if role == "top":
roleNum = 1
在函式中,role 還是可以訪問的。除非另有明確說明,否則該函式不會覆寫全域范圍內的值。這是使用global關鍵字完成的。IE
roleNum = 0
def roleChoose():
global roleNum
roleNum = 1
return roleNum
roleChoose()
或者,您可以在全域范圍內分配回傳值
roleNum = 0
def roleChoose():
roleNum = 1
return roleNum
roleNum = roleChoose()
后者通常是首選,因為意外副作用和錯誤的風險較低。
使用這個邏輯,我們可以重寫:
print(charSelect(arrayGrab(roleChoose())))
到
roleNum = roleChoose()
champArr = arrayGrab(roleNum)
champ = charSelect(champArr)
print(champ)
uj5u.com熱心網友回復:
import random
#VARIABLES
topChamps = ['Nasus', 'Garen', 'Nautilus']
botChamps = ['Draven', 'Caitlyn', 'Jhin']
midChamps = ['Lux', 'Veigar', 'Karthus']
supChamps = ['Sona', 'Tahm Kench', 'Alistar']
jgChamps = ['Amumu', 'Rammus', 'Malphite']
selectNum = 0
roleNum = 0
champArr = []
champ = "wrong"
#function to make the role choice easier for computer to read
def roleChoose(role):
if role == "top":
roleNum = 1
elif role == "bot":
roleNum = 2
elif role == "mid":
roleNum = 3
elif role == "sup":
roleNum = 4
elif role == "jg":
roleNum = 5
return roleNum
#function that determines what role list to use for champion choice
def arrayGrab(Num):
if Num == 1:
champArr = topChamps
elif Num == 2:
champArr = botChamps
elif Num == 3:
champArr = midChamps
elif Num == 4:
champArr = supChamps
elif Num == 5:
champArr = jgChamps
return champArr
print("made it to the end but you messed up")
#function that pulls a random name from champ list
def charSelect(arr):
x = random.randrange(0,2)
champ = arr[x]
return champ
role = input("what role did you get? ")
choose=roleChoose(role)
print(choose)
print(charSelect(arrayGrab(choose)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383759.html
上一篇:如何從另一個函式訪問布爾陣列?C
下一篇:我正在嘗試制作一個javascript,它將總結0-100之間的每個數字,誰的最后一位數字包含用戶選擇的0-9數字
