30/09/2018, 17:24

thắc mắc về vòng lặp while python

Cho mình hỏi là vòng lặp while True kia nghĩa là gì, có phải là vòng lặp vô hạn ko, hay là gì và dùng như thế nào ạ? với cái biến bear_moved = False kia là sao ạ?
cảm ơn mọi người

def bear_room():
	print "There is a bear here."
	print "The bear has a bunch of honey."
	print "The fat bear is in front of another door."
	print "How are you going to move the bear?"
	bear_moved = False

	while True:
		choice = raw_input("> ")

		if choice == "take honey":
			dead("The bear looks at you them slaps your face off.")
		elif choice == "taunt bear" and not bear_moved:
			print "The bear has moved from the door. You can go through it now."	
			bear_moved = True
		elif choice == "taunt bear" and bear_moved:
			dead("The bear gets pissed off and chews your leg off.")
		elif choice == "open door" and bear_moved:
			gold_room()
		else:
			print "I got no idea what that means."

ps: e có gg r mà ko hiểu j mới vô đây hỏi các bác đừng ném gạch tội nghiệp e T.T

... viết 19:26 ngày 30/09/2018

bear_moved cũng là 1 biến có kiểu true/false để kết hợp với điều kiện đứng trước nó thông qua toán tử and.
Nếu điều kiện choice có giá trị “taunt bear” là đúng và biến bear_moved cũng mang giá trị true thì mới thực hiện dòng dead(“The bear gets pissed off … leg off.”)

nguyenductuan viết 19:31 ngày 30/09/2018

nhưng lsao biết đc giá trị “taunt bear” là True ạ, lệnh elif bên dưới cũng có choice == “taunt bear” mà

... viết 19:40 ngày 30/09/2018
"taunt bear" 

thì không liên quan đến true/false gì cả,
nhưng

choice == "taunt bear"

có lại là 1 biểu thức so sánh trả về 1 trong 2 giá trị true hoặc false

Mr. July viết 19:32 ngày 30/09/2018

Cho mình hỏi là vòng lặp while True kia nghĩa là gì, có phải là vòng lặp vô hạn ko, hay là gì và dùng như thế nào ạ?

Nó đúng là vòng lặp vô hạn, tác dụng là để việc chạy chương trình được liên tục, nghĩa là khi bạn muốn test chẳng hạn, thay vì nhập xong 1 lần chương trình cho ra kết quả rồi tắt, thì có While true vào sẽ làm chương trình tiếp tục chạy vòng mới. Thường thì khi muốn test 1 chương trình có input ta làm như vậy.

Mr. July viết 19:24 ngày 30/09/2018

với cái biến bear_moved = False kia là sao ạ?

Biến này thực chất trong đoạn này không có tác dụng, vì các biểu thức điều kiện có nó tất cả đều true.

nguyenductuan viết 19:28 ngày 30/09/2018

vậy cho e hỏi là khi mình nhập “taunt bear” vào thì nó chạy elif này

elif choice == “taunt bear” and not bear_moved:
print “The bear has moved from the door. You can go through it now.”

chứ ko phải elif này ạ

elif choice == “taunt bear” and bear_moved:
dead(“The bear gets pissed off and chews your leg off.”)

Mr. July viết 19:39 ngày 30/09/2018

Đúng rồi bạn, câu lệnh chỉ được thực hiện khi phép and mang giá trị true. Và trong 1 khối lệnh if, đã thực hiện cái này thì sẽ thôi cái elif khác. Bạn có thể test mà, chạy thử xem, biết đâu có điều gì khác xảy ra

nguyenductuan viết 19:26 ngày 30/09/2018

e có gõ những cái khác r nhưng nó chỉ chạy cái else cuối cùng thôi, ko biết làm tek nào để ct nó chay cái
elif này cả :((

elif choice == “taunt bear” and bear_moved: dead(“The bear gets pissed off and chews your leg off.”)

Mr. July viết 19:31 ngày 30/09/2018

Bạn thử gõ 2 lần liên tiếp “taunt bear” trong 2 lần gõ xem sao?

nguyenductuan viết 19:38 ngày 30/09/2018

nó chạy dòng elif đấy r ạ tại sao lại tek hả a

Mr. July viết 19:30 ngày 30/09/2018

Chương trình này thử việc kiểm soát bộ nhớ của Python, với cùng 1 lần chạy (có vòng lặp while true) thì giá trị của biến logic vẫn ko thay đổi, còn nếu bạn tắt đi rồi bật lên chạy tiếp thì vùng nhớ chứa biến logic bị giải phóng, đánh bao nhiêu lần “taunt bear” thì vẫn ko hiện ra đc cái ở dưới đâu

nguyenductuan viết 19:39 ngày 30/09/2018

tek tức là có vòng lặp while true thì nó chạy lần lượt từng cái elif một hả a, hay như nào ạ?? khúc này khó hiểu quá a chỉ e với :’(

Mr. July viết 19:30 ngày 30/09/2018

Có hay không thì cũng chạy lần lượt, tuy nhiên có vòng lặp While true thì phiên làm việc được lưu lại, tức là giá trị các biến sau mỗi vòng lặp không được giải phóng mà vẫn giữ giá trị được gán cuối cùng bạn nhé

nguyenductuan viết 19:39 ngày 30/09/2018

cái if…elif này nó có giống vs switch case trong C lắm ko a???

Mr. July viết 19:35 ngày 30/09/2018

Nó cũng là 1 loại câu lệnh rẽ nhánh giống vậy đó bạn, quá nhiều người ta mới dùng switch case.

Bài liên quan
0