2012-09-27 248 views
0

我建立了一個遊戲,我需要使用random.choicePYTHON - 隨機選擇

當用戶登錄時,他們需要進入15的一個房間,隨意選擇。如何修改以下代碼以使用random.choice來選擇房間?

#login 
self.enterRoom("1") 
+2

@ user1704332 ..你不需要抱歉不需要有好的概念的東西.. :) ..坦率地說..這根本不是一個壞英語.. –

回答

7

使用random.randint不使用random.choice

import random 
room = random.randint(1,15) 
+0

嗨凱恩!那將是「1」到「15」?或者只是1到15? – user1704332

+1

@ user1704332它將是整數,而不是字符串。如果需要使用str()方法,您應該將其轉換爲字符串。 – zeebonk

+1

@ user1704332如何閱讀[documentation](http://docs.python.org/library/random.html#random.randint)?如果閱讀文檔後事情不清楚,一定要問,但你應該先嚐試自己弄清楚。 –

3

你幾乎肯定不希望使用random.choice此; Caner Korkmaz的答案要好得多。

但是,如果由於某種原因,你真的需要使用random.choice(例如,因爲它是一個家庭作業和你的教授堅持),見the documentation

random.choice(SEQ)

返回隨機元素來自非空序列seq。如果seq爲空,則引發IndexError。

所以,你需要得到一個包含字符串「1」到「15」的序列。要做到這一點:

rooms = [str(i) for i in range(1, 16)] 

然後:

room = random.choice(rooms) 
0

有多種方式來解決這個問題。只需選擇一種最適合您情況的方法,並且您發現它最具可讀性。

random.choice()方法偉大工程時,你有資格選擇的人口已經處於列表:

>>> rooms = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15'] 
>>> random.choice(rooms) 
'7' 

random.randrange()時,選用的是數字功能的工作原理和連續的(雖然你仍然要調用STR之後):

>>> str(random.randrange(1, 16)) 
'2' 

換一個計算機科學點最後一個是最優雅的;然而,就明確表達代碼在遊戲中的意圖而言,第一個通過說「隨機選擇可用房間」獲勝。