a = 10
b = 20
ls = [a, b]
如何使用ls[0]作為引數將變數 a 更改為例如 20?
我記得有一些方法可以撰寫代碼,您可以在其中輸入字串和變數,然后它會變成一行代碼并運行它。
這就是我依稀記得的方式,例如:
run(ls[0], "= 20")
顯示整個代碼,而不是壓縮版本,我想要做的是從文本檔案加載和保存變數。(代碼是關于制造毒品的終端游戲。)
money = 11000
growtime = 45
growreward = 50
gramsweed = 0
growing = False
pots = 1
seeds = 0
cooktime = 90
cookreward = 20
gramsmeth = 0
cooking = False
tanks = 0
methlitres = 0
weedselling = 0
methselling = 0
currentlyselling = False
dealers = 1
dealtime = 120
dealamount = 15
stats = [money, growtime, growreward, gramsweed, growing, pots, seeds, cooktime,
cookreward, gramsmeth, cooking, tanks, methlitres, weedselling, methselling,
currentlyselling, dealers, dealtime, dealamount]
boolstats = [growing, cooking, currentlyselling]
def save():
f = open("save.txt", "w")
for stat in stats:
f.write(str(stat) "\n")
f.close()
mainmenu()
def load():
i = 0
f = open("save.txt", "r")
for stat in stats:
print(stat)
stats[i] = f.readline(i)
i = 1
j = 0
for stat in boolstats:
if stat == "False": boolstats[j] = False
else: boolstats[j] = True
j = 1
f.close()
mainmenu()
uj5u.com熱心網友回復:
這是一個如何將游戲資料存盤在 dict 中并使用該json模塊輕松保存/加載它的示例。我將首先將所有變數宣告放入一個 dict 中(請注意,我通常會使用{}語法而不是dict()建構式,但我正在復制和粘貼您現有的代碼,這使得它稍微容易一些):
stats = dict(
money = 11000,
growtime = 45,
growreward = 50,
gramsweed = 0,
growing = False,
pots = 1,
seeds = 0,
cooktime = 90,
cookreward = 20,
gramsmeth = 0,
cooking = False,
tanks = 0,
methlitres = 0,
weedselling = 0,
methselling = 0,
currentlyselling = False,
dealers = 1,
dealtime = 120,
dealamount = 15,
)
現在我可以用幾行代碼撰寫你的save和函式:load
import json
def save():
with open("save.txt", "w") as f:
json.dump(stats, f)
def load():
with open("save.txt") as f:
stats.update(json.load(f))
該json模塊負責讀取行,決議它們,將它們轉換為正確的型別,所有這些,因為它可以直接從字典物件中提取所需的所有資訊。如果您有十幾個不同的單獨變數,您將無法獲得同樣型別的便利性和靈活性。
為了建議您將游戲代碼的其他部分轉換為使用 dict 而不是單個變數的方法,我需要查看該代碼,但希望這個示例有助于說服您,如果您不這樣做,生活會更輕松不需要一次處理一個變數!
uj5u.com熱心網友回復:
由于原始型別是按值傳遞的,因此它不會按您的意愿作業。你可以試試:
globals()['a'] = 20 # works for global variables only, not local
或將您的值存盤在類變數中,然后它的串列將保留對它的參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/484415.html
