01/10/2018, 08:17

Code này sai ở đâu vậy ạ

    from sys import exit
    def cam_xuc():
	camxuc = input("Ban dang cam thay nhu the nao? vui hay buon?
>")
	if camxuc == ("vui" or "buon"):
		mau_sac()
	
	else:
		print("Vui long nhap lai!")
		cam_xuc()
	

    def quan_ao():
	
	ao = input("Ban muon mac ao gi?
 Chung toi co cac loai ao sau: %s 
--->" % loai_ao)
	quan = input("Ban muon mac quan gi?
 Chung toi co cac loai quan sau:%s 
--->" % loai_quan)
	if ao ==("ao coc" or "ao so mi" or "ao len" or "ao khoac") and quan == ("quan coc" or "quan jean" or "quan dai"):
		
		cam_xuc()
		return ao, quan
	else:
		print("Vui long nhap lai!")
		quan_ao()

    def mau_sac():
	mau_quan = input("Ban muon chon mau quan nao cho minh %s?
>" % mau)
	mau_ao = input("Ban muon chon mau ao nao cho minh %s?
>" % mau)
	if mau_quan == ("Do" or "Cam" or "Luc" or "Lam" or "Tram" or "Vang" or "Tim" or "Den" or "Trang") and mau_ao == ("Do" or "Cam" or "Luc" or "Lam" or "Tram" or "Vang" or "Tim" or "Den" or "Trang"):
		
		if cam_xuc() == "vui":
			mau = ("Do, Cam, Vang, Luc, Lam, Trang")
			mau_sac()
		elif cam_xuc() == "buon":
			mau = ("Tram, Tim, Den")
			mau_sac()
		return mau_quan, mau_ao
		phoi_do()
	else:
		print("Vui long nhap lai!")
		mau_sac()
	
    def thoi_tiet():
	while True:
		thoi_tiet = input("Thoi tiet hom nay the nao?
 nong, lanh hay mat? 
>")
		if thoi_tiet == ("nong" or "lanh" or "mat"):
			
			if thoi_tiet == "nong":
				loai_ao = ("ao coc, ao so mi")
				loai_quan = ("quan coc, quan jean, quan dai")
				quan_ao()
		elif thoi_tiet == "lanh":
			loai_ao = ("ao so mi, ao len, ao khoac")
			loai_quan = ("quan jean, quan dai")
			quan_ao()
		else:
			loai_ao = ("ao coc, ao so mi, ao len, ao khoac")
			loai_quan = ("quan coc, quan jean, quan dai")
			quan_ao()
		
	else:
		print("Vui long nhap lai!")
		thoi_tiet()
    def phoi_do():
	print("Quan ao ma ban chon duoc la: %s %s" % (quan_ao(), mau_sac()))
    thoi_tiet()

Khoa NTA viết 10:26 ngày 01/10/2018

Khi code bằng Python, bạn nên kiểm tra kỹ các “indentation level”. Bạn đang dùng tab và khoảng trắng lẫn lộn.

vu van thinh viết 10:17 ngày 01/10/2018

chỗ nào vậy bạn giúp mk với bạn nói rõ giúp mk đi

vu van thinh viết 10:19 ngày 01/10/2018

Đây là đoạn mk code khi chạy nó cứ báo lỗi bạn xem giúp mk với

Khoa NTA viết 10:30 ngày 01/10/2018

Bạn đặt tên biến thoi_tiet trùng với tên hàm kìa (hàm nào cũng có). Tốt nhất là bạn nên để code của bạn ở chỗ pastebin.com thì mọi ngừoi dễ test hơn, và lần sau nhớ nói lỗi để mình khỏi phải dò từng dòng nữa .
Bạn đã dùng vòng lặp vô hạn thì đừng gọi đệ quy hàm nữa. Dễ rối lắm.

vu van thinh viết 10:28 ngày 01/10/2018

mình cảm ơn bạn lần sau mk sẽ rút kinh nghiệm
đoạn code mình mới sửa lại nhưng dòng cuối vẫn lỗi cú pháp bạn ạ

KYN viết 10:19 ngày 01/10/2018

trong hàm thoi_tiet, elif và else lùi vào cùng level với if nhiet_do = "nong"

vu van thinh viết 10:19 ngày 01/10/2018

cảm on bạn mình đã sửa chỗ đó rồi nhưng nó vẫn báo lỗi cú pháp dòng cuối bạn à

Khoa NTA viết 10:28 ngày 01/10/2018

Vẫn là lỗi “indentation” trong hàm thoi_tiet
Các biến trong hàm phoi_do chưa được định nghĩa. Hoặc bạn dùng biến toàn cục hoặc truyền tham số.

vu van thinh viết 10:22 ngày 01/10/2018

khó quá à bạn ơi
nó lỗi đoạn nào vậy chỉ mình với loay hoay từ trưa giờ

Khoa NTA viết 10:22 ngày 01/10/2018

Mình nghĩ là bạn bắt đầu đọc thêm sách đi và thực hành song song. Thực hành với các ví dụ dễ thôi, đến khi làm quen được cú pháp thì mới bắt đầu tạo chương trình hoàn chỉnh. Nôn nóng quá không giúp được gì đâu bạn

vu van thinh viết 10:21 ngày 01/10/2018

cảm ơn bạn
mk đang hk quyển learnpythonthehardway đến bài này bạn à chắc do kiến thức mình chưa đủ

Thành Phạm viết 10:22 ngày 01/10/2018

Tạm nhìn ra mấy lỗi sau:

Đầu tiên là phải chạy bằng python 3: hàm input trong python 2 khác với input trong python 3
thay cái biên thoi_tiet ở hàm thoi_tiet đi, đừng để nó trùng tên hàm

Cái điều kiện này bị sai:

thoi_tiet == ("nong" or "lanh" or "mat")

("nong" or "lanh" or "mat") luôn ra kết quả là “nong”, dẫn đến thoi_tiet == ("nong" or "lanh" or "mat") sẽ tương ứng với:

thoi_tiet == "nong"

Chứ không phải là thoi_tiet là một trong 3 cái nong lanh mat

Mình mới đọc code đến đây thôi, bạn tự sửa tiếp nhá

Phan Bá Hải viết 10:32 ngày 01/10/2018

Dòng 83 của bạn phải tab đúng với dòng print bên trên.
Do python không có dấu {} để đóng khối lệnh trong hàm hay class nên phải dùng tab cho chuẩn

Thành Phạm viết 10:27 ngày 01/10/2018

Không phải đâu bạn, thoi_tiet() đặt ở ngoài ý là chương trình khi chạy sẽ gọi hàm thoi_tiet đầu tiên

Lỗi tại dòng 83 syntax error là do cái dòng print ở trên thiếu 1 dấu đóng ngoặc

Phan Bá Hải viết 10:20 ngày 01/10/2018

Sorry, mình không rõ chương trình của bạn ấy chạy thế nào
Do không còn viết tràn lan như xưa nữa, hàm nào chạy đầu tiên thì cứ bỏ vào if(__name__ == __main__):

vu van thinh viết 10:18 ngày 01/10/2018

cho mình hỏi làm sao để cho cái dòng “thoi_tiet == (“nong” or “lanh” or “mat”)” làm sao để nó chạy như ý mình muốn vậy chứ viết từng cái ngại lắm

Thành Phạm viết 10:24 ngày 01/10/2018

Biết nó sai mà cứ viết vào, xong lên diễn đàn bắt ae debug là sao XD, làm mình tưởng chiêu thức mới XD lục tung learn python the hard way không thấy chỗ nào viết như trên XD

Viết như này nhá bạn:

thoi_tiet in ["nong", "lanh", "mat"]
vu van thinh viết 10:22 ngày 01/10/2018

cảm ơn bạn tại mk ngĩ thấy nó đúng đúng nên viết vào thử chạy

vu van thinh viết 10:26 ngày 01/10/2018

ban cho minh nick face dc k vay

Thành Phạm viết 10:31 ngày 01/10/2018

Hỏi trên diễn đàn cũng được bạn

Bài liên quan
0