अजगर सघन अगर बयान

0

सवाल

मैं कर रहा हूँ के साथ प्रयोग करने के लिए कैसे गाढ़ा अगर बयानों के भीतर अपने कोड. मैं एक परियोजना मैं पर काम कर रहा हूँ कि कई "अगर बयान" (भी कई का ट्रैक रखने के लिए) और बाहर आंकड़ा करना चाहते हैं एक तरह से गाढ़ा करने के लिए उन्हें. जाहिर है, यह शामिल है एक पाश के लिए है, लेकिन मैं कर रहा हूँ मुसीबत को जोड़ने के अतिरिक्त आपरेशन के भीतर इस लूप ।

मैं के साथ आया था के बाद काम के उदाहरण प्रदर्शित करने के लिए अपने मुद्दे:

num=6

if_options = [num==5, num==6]

for i in range(len(if_options)):
    if if_options[i]:
        print(num)

मैं जोड़ना चाहते हैं एक अतिरिक्त टुकड़ा करने के लिए कोड. इस अतिरिक्त टुकड़ा पर अमल करेंगे एक ऑपरेशन के भीतर अगर बयान । देखें निम्न नॉन-काम के उदाहरण के रूप में एक रूपरेखा के लिए क्या मैं कोशिश कर रहा हूँ को पूरा करने के लिए:

num=6

if_options = [num==5, num==6]
operations = [num=num+1, num=num-1]

for i in range(len(if_options)):
    if if_options[i]:
        operations[i]
        print(num)

जो भी कारण के लिए, यह निष्पादित नहीं होगा ऑपरेशन के हिस्से में कोड और विफल रहता है के साथ एक सिंटैक्स त्रुटि । यह मुझे नहीं घोषित कमांड "num=num+1" (उद्धरण चिह्नों के बिना) के भीतर एक सूची है, हालांकि इस घोषणा के लिए आवश्यक है को क्रियान्वित करने के आदेश. मुझे लगता है जैसे मैं हूँ लापता एक छोटी सी बात है और यह एक आसान तय होना चाहिए. आप पहले से धन्यवाद!!

for-loop function loops python
2021-11-23 22:51:10
4

सबसे अच्छा जवाब

1

यहाँ समस्या यह है कि आपरेशन मूल्यांकन कर रहे हैं जब आप सूची बनाने के लिए उन्हें. आप चाहते हैं उन्हें लिखने के लिए तार के रूप में, और फिर eval/exec पाश में उन्हें. मैं मान जाएगा आप भी चाहते हैं की स्थिति में मूल्यांकन पाश ।

num = 6

if_options = ['num==5', 'num==6']
operations = ['num=num+1', 'num=num-1']

for i in range(len(if_options)):
    if eval(if_options[i]):
        exec(operations[i])
        print(num)
2021-11-23 23:04:38

क्षमा करें, मैं सही eval करने के लिए exec जब चल रहा है आपरेशनों.
Marcel

यह आम तौर पर आप क्या चाहते हैं नहीं है, तथापि. आप शायद चाहिए वास्तव में कोड लिखने में अपने कार्य, और refactoring कुछ अन्य तरीके से.
Marcel

शायद दो एक समारोह बढ़ाने के लिए और एक कम करने के लिए एक बेहतर विचार होगा. आप जोड़ सकते हैं एक संदर्भ की एक सूची के लिए उन्हें और उन्हें फोन पाश में ।
MSH
0

क्यों नहीं कार्य करता है?

def check(inp):
    #you can do some logic and type checking here
    return type(inp)==int # for example, or return arguments to pass to the operatiins

def operation(inp2):
    if inp2: # check if true or not empty, as an example
        #do some operations

# and then you do something like

for x in input_of_things:
    operation( check( x ) )
2021-11-23 23:19:33
0

आप इस्तेमाल कर सकते हैं लैम्ब्डा का भाव भी है ।

num = 6
if_option_checks = [lambda x: x == 5, lambda x: x == 6]
operations = [lambda x: x + 1, lambda x: x - 1]
for check, operation in zip(if_option_checks, operations):
    if check(num):
        num = operation(num)

या आप इस्तेमाल कर सकते शब्दकोशों और लैम्ब्डा भाव

num = 6
if_option_checks = {"add": lambda x: x == 5, "sub": lambda x: x == 6}
operations = {"add": lambda x: x + 1, "sub": lambda x: x - 1}
for key, check in if_option_checks.items():
    if check(num):
        num = operations[key](num)
2021-11-24 00:40:38
0

शायद एक स्विच बयान संरचना में मदद कर सकता है.

पहले परिभाषित एक स्विच समारोह:

def switch(v): yield lambda *c: v in c

तो उपयोग में एक चलना पाश के लिए है कि पैदावार एक मामले में समारोह स्विच के लिए मान:

for case in switch(num):

    if case(5):
        num = num + 1
        break

    if case(6):
        num = num - 1
        break

    ...
2021-11-24 02:44:41

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में