2012-01-03 9 views
7

Tôi mới dùng Python. Trên thực tế tôi đã thực hiện một cái gì đó bằng cách sử dụng Java như hình dưới đây.Infinite for loop in Python

for(;;){ 
switch(expression){ 
    case c1: statements 

    case c2: statements 


    default: statement 
} 
} 

Làm cách nào để triển khai tính năng này bằng Python?

Trả lời

12

Sử dụng vòng lặp while:

while True: 

     if condition1: 
      statements 
     elif condition2: 
      statements 
     ... 
     else: 
      statements 
6
while True: 
    # do stuff forever 
0

Bạn có thể sử dụng

while True: 
    if c1: 
     statements 
    elif c2: 
     statements 
    else: 
     statements 

hoặc

var = 1 
while var == 1: 
    # do stuff 
+1

Thông thường, việc sử dụng boolean 'True' thay vì số nguyên nếu chúng ta đang nói đến vòng lặp vô hạn thì càng phức tạp hơn. Bằng cách này, mục đích là rõ ràng hơn và dễ dàng hơn để gỡ lỗi (ai nói rằng giá trị của 'var' có thể không thay đổi theo thời gian?). – Makoto

+0

Đó là sự thật, và sử dụng boolean là (có thể) là cách may mắn. Đó chỉ là một ví dụ khác về việc đạt được điều tương tự. 'var' có thể thay đổi, nhưng điều đó cũng tùy thuộc vào nhà phát triển để không thay đổi nó nếu cô ấy chọn theo cách đó. ;-) –

+1

Nhưng tại sao có 'var' ở tất cả? Nếu điểm là có giá trị luôn bằng 1 để tạo vòng lặp vô hạn, tại sao không chỉ nói 'while 1 == 1'? Và đã làm điều đó, thật vô lý khi không viết 'trong khi True'. – Ben

1

Chính thức, không có switch tuyên bố trong Python; đó là một loạt các câu lệnh lồng nhau if-elif-else.

Vòng lặp vô hạn được thực hiện theo tuyên bố while True.

Tất cả với nhau:

while True: 
    if condition_1: 
     condition_1_function 
    elif condition_2: 
     condition_2_function 
    elif condition_3: 
     condition_3_function 
    else: # Always executes like "default" 
     condition_default_function 
+0

Hãy coi chừng rằng không có sự sụp đổ trong 'if/elif/else' như sẽ có trong' switch' – dcrosta

1

Nếu bạn đang tìm kiếm một cách để lặp vô hạn trong python bạn có thể sử dụng itertools.count() chức năng giống như một vòng lặp for. http://docs.python.org/py3k/library/itertools.html#itertools.count

+0

Điều này có vẻ hữu ích cho các biểu thức máy phát vô hạn như '('CONSTANT' cho i trong itertools.count (0, 0)) 'như một đối số cho các hàm mong đợi một trình tạo. Bạn không phải định nghĩa một hàm riêng biệt có vòng lặp True. – hobs

+0

@hobs Để đạt được điều đó, bạn sẽ sử dụng 'itertools.repeat ('CONSTANT')'. – flornquake