Hướng dẫn can you put two if statements on one line in python? - bạn có thể đặt hai câu lệnh if trên một dòng trong python không?

Tôi đã đọc các liên kết dưới đây, nhưng nó không giải quyết được câu hỏi của tôi. Python có toán tử điều kiện ternary không? [Câu hỏi là về câu lệnh IF-Else ngưng tụ cho một dòng]
Does Python have a ternary conditional operator? [the question is about condensing if-else statement to one line]

Có một cách nào dễ dàng hơn để viết một câu lệnh if-elif-else để nó phù hợp với một dòng? Ví dụ,
For example,

if expression1:
   statement1
elif expression2:
   statement2
else:
   statement3

Hoặc một ví dụ trong thế giới thực:

if i > 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0

Tôi chỉ cảm thấy nếu ví dụ trên có thể được viết theo cách sau, nó có thể trông ngắn gọn hơn.

x=2 if i>100 elif i100 elif i>> a = "Hello" if foo[] else "Goodbye"

Edit:

Câu hỏi sửa đổi của bạn bây giờ cho thấy ba câu nói giống hệt nhau ngoại trừ giá trị được gán. Trong trường hợp đó, một toán tử ternary bị xích không hoạt động, nhưng tôi vẫn nghĩ rằng nó không thể đọc được:

>>> i=100
>>> a = 1 if i100 else 0
>>> a
0
>>> i=101
>>> a = 1 if i100 else 0
>>> a
2
>>> i=99
>>> a = 1 if i100 else 0
>>> a
1

Đã trả lời ngày 25 tháng 12 năm 2012 lúc 9:16Dec 25, 2012 at 9:16

Tim Pietzckertim PietzckerTim Pietzcker

Phù bằng vàng 319K5757 gold badges494 silver badges550 bronze badges

4

Nếu bạn chỉ cần các biểu thức khác nhau cho các trường hợp khác nhau thì điều này có thể phù hợp với bạn:

expr1 if condition1 else expr2 if condition2 else expr

Ví dụ:

a = "neg" if b0 else "zero"

Đã trả lời ngày 25 tháng 12 năm 2012 lúc 9:36Dec 25, 2012 at 9:36

LychalychaLycha

9.6893 huy hiệu vàng34 Huy hiệu bạc43 Huy hiệu đồng3 gold badges34 silver badges43 bronze badges

2

Mặc dù có một số câu trả lời khác: Có điều đó là có thể:YES it IS possible:

if expression1:
   statement1
elif expression2:
   statement2
else:
   statement3

Dịch sang một lớp lót sau:

statement1 if expression1 else [statement2 if expression2 else statement3]

Trong thực tế, bạn có thể làm tổ cho đến vô cùng. Vui thích ;]

Đã trả lời ngày 10 tháng 10 năm 2019 lúc 8:44Oct 10, 2019 at 8:44

Gustavzgustavzgustavz

2.6203 Huy hiệu vàng22 Huy hiệu bạc41 Huy hiệu đồng3 gold badges22 silver badges41 bronze badges

2

Chỉ cần tổ một cái khác nếu mệnh đề trong tuyên bố khác. Nhưng điều đó không làm cho nó trông đẹp hơn.

>>> x=5
>>> x if x>0 else ["zero" if x==0 else "invalid value"]
5
>>> x = 0
>>> x if x>0 else ["zero" if x==0 else "invalid value"]
'zero'
>>> x = -1
>>> x if x>0 else ["zero" if x==0 else "invalid value"]
'invalid value'

Đã trả lời ngày 25 tháng 12 năm 2012 lúc 9:42Dec 25, 2012 at 9:42

David Laidavid LaiDavid Lai

8047 Huy hiệu bạc13 Huy hiệu đồng7 silver badges13 bronze badges

1

Bạn có thể thực sự sử dụng phương thức

x=2 if i>100 elif i100 elif i 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0
0

Bạn không cần phương pháp

x=2 if i>100 elif i100 elif i 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0
1

Nhiều nhất một trong các khóa nên đánh giá lý tưởng là

x=2 if i>100 elif i100 elif i>> a = "Hello" if foo[] else "Goodbye"
0. Vì vậy, ví dụ của bạn, bạn phải áp dụng toán tử ternary hai lần:

if i > 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0
2

Đã trả lời ngày 17 tháng 5 năm 2019 lúc 21:14May 17, 2019 at 21:14

Alfredoalfredoalfredo

4846 Huy hiệu bạc8 Huy hiệu Đồng6 silver badges8 bronze badges

Có bạn có thể làm điều này:

if i > 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0
3

Paul Roub

36.1k27 Huy hiệu vàng81 Huy hiệu bạc88 Huy hiệu đồng27 gold badges81 silver badges88 bronze badges

Đã trả lời ngày 12 tháng 8 năm 2021 lúc 16:41Aug 12, 2021 at 16:41

HolakonoobholakonoobHolakoNoob

Huy hiệu 611 Bạc1 Huy hiệu Đồng1 silver badge1 bronze badge

if i > 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0

Nếu bạn muốn sử dụng mã đã nêu ở trên trong một dòng, bạn có thể sử dụng các mục sau:

if i > 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0
5

Khi làm như vậy, x sẽ được gán 2 nếu i> 100, 1 nếu tôi 100: x = 2 elif i < 100: x = 1 else: x = 0 6

if i > 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0
7

Henry Ecker

32.9K18 Huy hiệu vàng30 Huy hiệu bạc51 Huy hiệu Đồng18 gold badges30 silver badges51 bronze badges

Đã trả lời ngày 26 tháng 6 năm 2021 lúc 13:04Jun 26, 2021 at 13:04

Chim chim xanhBlue Bird

1733 Huy hiệu bạc7 Huy hiệu đồng3 silver badges7 bronze badges

Mọi người đã đề cập đến các biểu hiện ternary. Đôi khi với một gán có điều kiện đơn giản làm ví dụ của bạn, có thể sử dụng biểu thức toán học để thực hiện bài tập có điều kiện. Điều này có thể không làm cho mã của bạn rất dễ đọc, nhưng nó có được nó trên một dòng khá ngắn. Ví dụ của bạn có thể được viết như thế này:

if i > 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0
8

Các so sánh sẽ đúng hoặc sai, và khi nhân với các số sau đó sẽ là 1 hoặc 0. Người ta có thể sử dụng A + thay vì | ở giữa.

Đã trả lời ngày 25 tháng 12 năm 2012 lúc 21:30Dec 25, 2012 at 21:30

Ant6nAnt6nAnt6n

1.7781 Huy hiệu vàng17 Huy hiệu bạc25 Huy hiệu đồng1 gold badge17 silver badges25 bronze badges

Nó cũng phụ thuộc vào bản chất của biểu hiện của bạn. Lời khuyên chung về các câu trả lời khác của "không làm điều đó" là khá hợp lệ đối với các tuyên bố chung và các biểu thức chung.

Nhưng nếu tất cả những gì bạn cần là một bảng "Công văn", như, gọi một hàm khác nhau tùy thuộc vào giá trị của một tùy chọn đã cho, bạn có thể đặt các chức năng để gọi bên trong từ điển.

Cái gì đó như:

if i > 100:
    x = 2
elif i < 100:
    x = 1
else:
    x = 0
9

Thay vì IF-Else:

x=2 if i>100 elif i100 elif i100 elif i

Bài Viết Liên Quan

Chủ Đề