長篇故事總之,我在一段時間後重新編寫代碼,並且認爲我會做一些比較直接的事情,將C程序轉換爲Python。我熟悉基本的C,熟悉基本的編程概念,所以對我來說,我所要求的不應該那麼困難。理解列表問題(我認爲)
我正在將C
的經典Star Trek
文字遊戲改寫爲Python
。一個函數設置了遊戲世界:
經過大量的牙齒磨牙後,我得出了我使用的錯誤列表的結論。我的一個功能代碼爲:
高清setupGalaxy(困難):
for x in range(0,8):
for y in range(0,8):
sectors[x][y] = 0
quadrants[x][y].baseHere = 0
quadrants[x][y].klingonCount = 0
quadrants[x][y].starCount = 0
klingonsHere = 0
numBases = 0
for x in range(0,8):
for y in range(0,8):
J = random.randint(1,99)
baseHere = 0
if (J < 5):
numBases += 1
baseHere = 1
temp = getKlingons(difficulty)
klingonsHere += temp
quadrants[x][y].klingonCount = temp
quadrants[x][y].baseHere = baseHere
quadrants[x][y].starCount = random.randint(1,4)
print quadrants[x][y].klingonCount,quadrants[x][y].baseHere,quadrants[x][y].starCount," ",
print
numKlingons = klingonsHere
for x in range(0,8):
for y in range(0,8):
print quadrants[x][y].klingonCount,quadrants[x][y].baseHere,quadrants[x][y].starCount," ",
return
什麼功能應該做的是:啓動的2維列表象限內容爲0(可能是沒有必要的,但給我一些安心),然後隨機產生一些克林貢,星座和星星,並將它們放入列表中。
我的問題是這樣的:我包括一些打印語句,讓我看到了分配的輸出,和他第一次打印語句吐出來的正是我想看到的,與明星,克林貢等
隨機採集第二個打印語句打印出相同的數字64次。在第一次和第二次之間,我看不到有什麼變化。
我假設我在列表中出錯。誰能幫忙?
Joseph。
您在函數中設置的所有全局變量都應聲明爲「全局」,否則它們將屬於函數的名稱空間(即它們將是局部變量)。這裏是一個[教程](http://spartanideas.msu.edu/2014/05/12/a-beginners-guide-to-pythons-namespaces-scope-resolution-and-the-legb-rule/) LEGB規則 – Pynchia
什麼是'quadrantClass'?它看起來像是用一個類對象填充了「象限」的所有單元,這是沒有意義的。 – user2357112