2010-06-04 6 views
5

मैं एक प्रोग्राम बना रहा हूं, कुछ हद तक, चार पासा रोल करता है और परिणाम से सबसे कम पासा घटा देता है। मैं जिस कोड का उपयोग कर रहा हूं वहक्या पाइथन में आकार के आधार पर यादृच्छिक परिणामों को व्यवस्थित करने का एक और अधिक प्रभावी तरीका है?

die1 = random.randrange(6) + 1 
die2 = random.randrange(6) + 1 
die3 = random.randrange(6) + 1 
die4 = random.randrange(6) + 1 
if die1 <= die2 and die1 <= die3 and die1 <= die4: 
    drop = die1 
elif die2 <= die1 and die2 <= die3 and die2 <= die4: 
    drop = die2 
elif die3 <= die1 and die3 <= die2 and die3 <= die4: 
    drop = die3 
else: 
    drop = die4 

cha = die1 + die2 + die3 + die4 - drop 

यह मेरी सबसे दूर तक सीमित कोडिंग क्षमता के साथ सबसे अच्छा हो सकता है। आकार के क्रम में चार पासा व्यवस्थित करने का कोई बेहतर तरीका है, तो बचे हुए को अनदेखा करते समय तीनों को एक साथ जोड़ दें? या वह कोड है जिसे मैं करने का सबसे अच्छा तरीका उपयोग कर रहा हूं?

+1

सिर्फ एक टिप, random.randrange एक शुरुआत पैरामीटर स्वीकार करता है। परिणाम में 1 जोड़ने से बचने के लिए 'random.randrange (1, 7)' का उपयोग करें। – Ponkadoodle

+0

मैंने सोचा था कि यह यादृच्छिक था। ब्रैंडिंट ने ऐसा किया था, और रैंडेंज को एक नंबर होना था जो 0 से उस नंबर पर यादृच्छिक प्रतिनिधित्व करता था। हालांकि अब मैं कोड को फिर से देखता हूं, मुझे 6 – Mella

+0

के बजाय 5 का उपयोग करना चाहिए था यदि संदेह में, दस्तावेज़ देखें। randrange: http://docs.python.org/library/random.html#random.randrange और randint: http://docs.python.org/library/random.html#random.randint –

उत्तर

8

एक सूची में पासा रखो, sorted का उपयोग कर सूची को सॉर्ट और एक टुकड़ा का उपयोग कर छोटा तत्व निकालें:

>>> import random 
>>> dice = [random.randint(1, 6) for x in range(4)] 
>>> sum(sorted(dice)[1:]) 
13 

या एक विकल्प है कि सरल है और भी तेजी से हो सकता है अगर आप पासा के बहुत सारे है: कम से कम मरने खोजने के लिए और उन सब की राशि से घटा दें करने के लिए min का उपयोग करें:

>>> sum(dice) - min(dice) 
13 
+0

तो पासा = [random.randint (1, 6) रेंज (4) में एक्स के लिए] राशि (पासा) - मिनट (पासा) कि पूरे बदल देता है ब्लॉक मैंने पोस्ट किया? lol मैं ऐसा लगता है कि बहुत समय बर्बाद कर दिया। एक्स एक चर है या यह सिर्फ समारोह का हिस्सा है? – Mella

+0

@ मैट: हाँ, आपको बस इतना ही चाहिए। 'X' एक अप्रयुक्त चर है। –

+0

मजेदार युक्ति: आप एक अप्रयुक्त चर के लिए प्लेसहोल्डर के रूप में '_' का उपयोग कर सकते हैं। उदाहरण के लिए: 'श्रेणी में _ के लिए [random.randint (1, 6)]' – jathanism

संबंधित मुद्दे

 संबंधित मुद्दे