1
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Trong ví dụ này, tôi đã tự hỏi những gì tôi có thể sử dụng thay vì phá vỡ
while [True]:
try:
guess = ***********
break
except ValueError:
print[***]
Hỏi ngày 25 tháng 4 năm 2020 lúc 6:14Apr 25, 2020 at 6:14
5
Bạn có thể khởi tạo guess
thành một giá trị không hợp lệ và kiểm tra cho điều đó.
guess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
Khi không có lỗi, guess
sẽ được đặt thành một số nguyên, không phải là None
, vì vậy vòng lặp sẽ kết thúc.
Nhưng tôi thích mã ban đầu của bạn, nó rõ ràng hơn.
Đã trả lời ngày 25 tháng 4 năm 2020 lúc 6:19Apr 25, 2020 at 6:19
BarmarbarmarBarmar
699K53 Huy hiệu vàng469 Huy hiệu bạc578 Huy hiệu Đồng53 gold badges469 silver badges578 bronze badges
1
Vui lòng cung cấp thêm thông tin.
loop = True
while [loop]:
try:
guess = int[input['Please enter your guess for the roll: ']]
loop =False
#break
except ValueError:
print['Only enter a number please']
Đã trả lời ngày 25 tháng 4 năm 2020 lúc 6:19Apr 25, 2020 at 6:19
Barmarbarmar
MAX_GUESS = 3
for _ in range[MAX_GUESS]:
try:
guess = int[input['Input guess: ']]
except ValueError:
print["Try again!"]
else:
print["Success!"]
break
else:
guess = None
print["Max guesses attempted"]
699K53 Huy hiệu vàng469 Huy hiệu bạc578 Huy hiệu Đồng
Vui lòng cung cấp thêm thông tin.Apr 25, 2020 at 6:46
Một cách tiếp cận khác sử dụng một dòng điều khiển python ít được biết đến nhưng hữu ích bao gồm sử dụng
guess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
0 và guess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
1, nó vẫn yêu cầu guess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
2 nhưng tôi nghĩ nó vẫn là một sự thay thế gọn gàngMarkAWardKhối
3 gắn với vòng guess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
0 chỉ được nhập nếu không gặp phải guess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
2 trong vòng lặp, tương tự guess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
3 của guess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
1 chỉ được nhập nếu một ngoại lệ không được nâng lên trong2 gold badges16 silver badges28 bronze
badgesguess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
Về mặt kỹ thuật, mọi tuyên bố dòng điều khiển là tương đương, i. e. Bạn có thể viết lại bất kỳ mã nào sử dụng một câu lệnh luồng điều khiển theo cách mà nó sử dụng một câu lệnh dòng điều khiển khác thay vào đó, trong khi đến cùng một kết quả. Không phải là nó sẽ luôn là một ý kiến hay;]
Trong ví dụ của bạn, nếu vòng ngoài là một vòng lặp, bạn có thể sử dụng
guess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
9 thay vì ngắt. Tuy nhiên, vì điều này sẽ chỉ dẫn đến việc chuyển sang lần lặp tiếp theo của vòng lặp, bạn cũng cần nhớ thực tế là bạn muốn thoát khỏi vòng lặp và kiểm tra điều này trong điều kiện vòng lặp của bạn:bool end_of_loop = false; ... do { ... ... if [...] { end_of_loop = true; continue; } ... ... } while [!end_of_loop];
Mã này sẽ hoạt động cho bất kỳ loại vòng lặp:
loop = True
while [loop]:
try:
guess = int[input['Please enter your guess for the roll: ']]
loop =False
#break
except ValueError:
print['Only enter a number please']
0, loop = True
while [loop]:
try:
guess = int[input['Please enter your guess for the roll: ']]
loop =False
#break
except ValueError:
print['Only enter a number please']
1 hoặc loop = True
while [loop]:
try:
guess = int[input['Please enter your guess for the roll: ']]
loop =False
#break
except ValueError:
print['Only enter a number please']
2, nhưng không phải là các loại khối mã khác.Ngoài ra, nó thực sự không cải thiện so với
guess = None
while guess is None:
try:
guess = int[input['Please enter your guess for the roll: ']]
except ValueError:
print['Only enter a number please']
2 - không phải từ điểm đọc cũng không hiệu suất, vì vậy nếu mục tiêu của bạn là tránh các lệnh giống như ____ 24, bạn có thể sử dụng loop = True
while [loop]:
try:
guess = int[input['Please enter your guess for the roll: ']]
loop =False
#break
except ValueError:
print['Only enter a number please']
5 bên trong mã của bạn như một phương tiện để bỏ qua phần còn lại của khối mã :bool end_of_loop = false; ... do { ... ... if [...] { end_of_loop = true; } if [!end_of_loop] { ... ... } } while [!end_of_loop];
Điều này sẽ hoạt động trong bất kỳ loại khối mã, không chỉ các vòng lặp.
Chương này là từ cuốn sách
Thoát ra khỏi vòng lặp và khối
Tuyên bố phá vỡ là một cách tiện dụng để thoát khỏi một vòng lặp từ bất cứ nơi nào trong cơ thể vòng lặp. Ví dụ: đây là một cách khác để tổng hợp một số số không xác định:
# donesum_break.py total = 0 while True: s = input['Enter a number [or "done"]: '] if s == 'done': break # jump out of the loop num = int[s] total = total + num print['The sum is ' + str[total]]
Điều kiện vòng lặp chỉ đơn giản là đúng, có nghĩa là nó sẽ lặp lại mãi mãi trừ khi ngắt được thực thi. Cách duy nhất để phá vỡ được thực thi là nếu s bằng 'xong'.
Một lợi thế lớn của chương trình này so với Donesum.py là câu lệnh đầu vào không được lặp lại. Nhưng một bất lợi lớn là lý do tại sao các vòng lặp được chôn trong thân vòng. Nó không quá khó để nhìn thấy nó trong ví dụ nhỏ này, nhưng trong các chương trình lớn hơn, các tuyên bố phá vỡ có thể là khó khăn để xem. Hơn nữa, bạn có thể có nhiều lần nghỉ tùy thích, điều này làm tăng thêm sự phức tạp của việc hiểu vòng lặp.
Nói chung, thật khôn ngoan khi tránh câu lệnh Break và chỉ sử dụng nó khi nó làm cho mã của bạn đơn giản hơn hoặc rõ ràng hơn.
Một người họ hàng phá vỡ là tuyên bố tiếp tục: Khi tiếp tục được gọi bên trong một cơ thể vòng lặp, nó ngay lập tức nhảy lên điều kiện vòng lặp, do đó tiếp tục với lần lặp tiếp theo của vòng lặp. Nó ít phổ biến hơn một chút so với phá vỡ, và nói chung nó nên tránh hoàn toàn.