2011-03-28 12 views
21

से यादृच्छिक समारोह कॉल करने के लिए इस सूत्र से: How do I perform a random event in Python by picking a random variable?सिंटेक्स एक सूची

मुझे पता चला कि यह एक सूची में कुछ कार्यों डाल करने के लिए संभव है, और random.choice() का उपयोग करके, उनमें से एक फोन एक यादृच्छिक घटना उत्पन्न करने के लिए।

मुझे ऐसा करने में दिलचस्पी है क्योंकि मैं शुरुआती ट्यूटोरियल के हिस्से के रूप में काफी छोटा टेक्स्ट आधारित गेम लिख रहा हूं।

लेकिन जब मैं लिखने मैं क्या सोचता हूँ मुझे वांछित परिणाम दे देंगे (कि, बस कार्यों में से एक कहा जा रहा है और उसके स्ट्रिंग मुद्रण है:

C:\Windows\system32\cmd.exe /c python random_func.py 

This is func_test_1. 

This is func_test_2. 

This is func_test_3. 

Hit any key to close this window... 
:

import random 

def func_test_1(): 
    print "This is func_test_1." 

def func_test_2(): 
    print "This is func_test_2." 

def func_test_3(): 
    print "This is func_test_3." 

my_list = [func_test_1(), func_test_2(), func_test_3()] 

random.choice(my_list) 

मैं इस परिणाम मिलता है

तीनों कार्य बुलाया जा रहा है और मुद्रण बात है।

किसी ने मुझे बाहर यह करने के लिए सही सिंटैक्स के साथ मदद कर सकते हैं? धन्यवाद।

उत्तर

28

ब्रांड्स के साथ आप फ़ंक्शन को कॉल करते हैं। क्या आप चाहते हैं उन्हें सूची में बताए जाता है और चुनाव बाद में फोन: सबसे पहले

my_list = [func_test_1, func_test_2, func_test_3] 
random.choice(my_list)() 
7

, जब आप सूची में क्या my_list = [func_test_1(), func_test_2(), func_test_3()] आप दुकान समारोह परिणाम, नहीं काम करता है। इसके बजाय my_list = [func_test_1, func_test_2, func_test_3] करें और फिर यादृच्छिक फ़ंक्शन कॉल करें। इस तरह:

my_list = [func_test_1, func_test_2, func_test_3] 
random.choice(my_list)() 
+0

धन्यवाद ikostia कहता है। मैं आपके समय और आपकी प्रतिक्रिया की सराहना करता हूं। – Don

+1

यह मेरे लिए एक खुशी है :) – ikostia

5

कार्य पाइथन में ऑब्जेक्ट्स हैं।

तो आप बस उनके नाम से उन्हें (बिना कोष्ठक, जो वास्तव में कॉल समारोह! करते हैं), आप अंतर्निहित समारोह वस्तुओं को देखें। आप उन्हें दोबारा बांध सकते हैं, उनका निरीक्षण कर सकते हैं .. या सूची में उनके लिए एक संदर्भ स्टोर कर सकते हैं।

mylist = [test_func_1,test_func_2,..]

इस बिंदु पर, कार्यों में से कोई भी मार डाला गया है। इसके बाद आप सूची में से एक समारोह लेने और () का उपयोग कर इसे लागू करने की random.choice उपयोग कर सकते हैं:

  • mylist[0]() सूची में पहले फ़ंक्शन को कॉल
  • random.choice(mylist)() एक यादृच्छिक समारोह
+0

आपके समय और आपके उत्तर के लिए धन्यवाद अलेक्जेंडर। – Don

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