Bir sətirdə if-then-else ifadəsi yerləşdirmək

Mümkün dublikat:
Python üçlü operatoru

Mən yalnız Python'a daxil oluram və sintaksisin çatışmazlığını çox sevirəm. Ancaq bir - if - else operatoru bir xəttə uyğunlaşdıra bilmək üçün daha asan bir yol varmı?

Məsələn:

 if count == N: count = 0 else: count = N + 1 

Bunu yazmanın daha asan bir yolu varmı? Yəni, Objective-C-də mən bunu belə yazardım:

 count = count == N ? 0 : count + 1; 

Python üçün oxşar bir şey varmı?

Yeniləmə

Bilirəm ki, bu halda mən count == (count + 1) % N istifadə edə bilərəm

Ümumi sintaksis haqqında soruşuram.

601
10 мая '10 в 15:58 2010-05-10 15:58 Abizern 10 may 10-da saat 15: 58- da təyin olunub
@ 5 cavab

Bu, əgər, daha sonra python sintaksisindən daha üçtərəfli operatorun daha doğru ifadəsidir

 value_when_true if condition else value_when_false 

Ən yaxşı nümunə: ( Cənab Burns sayəsində)

'Yes' if fruit == 'Apple' else 'No'

İndi məqsədi və sintaksis ilə kontrast

 fruit = 'Apple' isApple = True if fruit == 'Apple' else False 

qarşı

 fruit = 'Apple' isApple = False if fruit == 'Apple' : isApple = True 
1139
10 мая '10 в 16:00 2010-05-10 16:00 Cavab cmsjr 10 may 10: 00-da saat 16: 00-da verilir
 count = 0 if count == N else N+1 
border=0

- Üçqat operator. Sənin qərarının bundan daha oxunacaq olduğunu söyləyə bilərəm.

110
10 мая '10 в 16:00 2010-05-10 16:00 10 May 10: 10-da Tim Pietzker tərəfindən cümə axşamı 16: 00-da cavab verildi

Üstəlik, sözdizimi if həm də "normal" istifadə edə bilərsiniz və bir kolon ilə bir xəttlə uyğunlaşdırın.

 if i > 3: print("We are done.") 

və ya

 field_plural = None if field_plural is not None: print("insert into testtable(plural) '{0}'".format(field_plural)) 
109
07 июля '12 в 11:41 2012-07-07 11:41 Cavab Yohannes Braunias tərəfindən 07 iyul 2012-ci ildə saat 11.41-də verilib 2012-07-07 11:41

Ümumi üç sözdizimi:

 value_true if <test> else value_false 

Başqa bir yol:

 [value_false, value_true][<test>] 

məsələn:

 count = [0,N+1][count==N] 

Hər iki filial öz seçiminə görə qiymətləndirir. Yalnız seçilmiş filialı qiymətləndirmək üçün:

 [lambda: value_false, lambda: value_true][<test>]() 

məsələn:

 count = [lambda:0, lambda:N+1][count==N]() 
85
10 мая '10 в 16:22 2010-05-10 16:22 cavab mshsayem 10 may 10: 10-da verilir. 2010-05-10 16:22
 <execute-test-successful-condition> if <test> else <execute-test-fail-condition> 

kodu snippet ilə olacaq,

 count = 0 if count == N else N + 1 
17
10 мая '10 в 18:23 2010-05-10 18:23 Cavab verilir phoenix24 May 10 '10 at 18:23 2010-05-10 18:23

başqa suallar və ya sual