Làm sao để break mỗi case trong lệnh switch của python?

print("1. giai phuon trinh bac 1")
print("2. giai phuon trinh bac 2")
print("3. tinh so dien")
print("chon chuc nang")
x=int(input());
import lab3_1
import lab3_2
import lab3_3
if(x>3):
    print("khong co chuc nang nay")
else:
    def tes(x):
      switcher={
          1: lab3_1.pt1,
          2: lab3_2.pt2,
          3: lab3_3.tiendien
      }
      return switcher.get(x,"nothing")

Khi chọn chức năng thì nó chạy từ đầu đến cuối không thể break được chức năng. Xin các bác chỉ giáo với ạ :disappointed_relieved::disappointed_relieved:

Code python mà bạn copy 1 tràng thế thì ai đọc được bạn ơi

1 Like

Python nó không có switch case như những ngôn ngữ khác, nên nếu không thật sự cần, thì bạn nên dùng if…else.

Bạn có thể “giả bộ” một cái switch-case như này:

user_input = int(input('Enter a number: '))

def fake_switcher(nooooo):
    switcher = {
            1:'trứng ốp la',
            2:'cơm chiên gà rô ti',
            3:'cơm đỏ bò lúc lắc'
    }

    return switcher.get(nooooo, 'không có tiền')


print(fake_switcher(user_input))
4 Likes

vậy nếu mình làm cái gì đó “xịn xò” mà có nhiều điều kiện để xét chẳng lẽ mình gõ if else mỏi tay luôn hay mình vẫn có cách khác bác?

Mình chỉ là gà thôi nên cũng không dám chém gió về việc này.
Nhưng với những đoạn code nhỏ nhỏ mà mình từng viết (< 2000 dòng) thì mình chưa thấy có vấn đề gì với if…else hết. Với mình nghĩ vấn đề bạn đưa nó thuộc về logic của code, chứ không phải số dòng code.

Chắc phải chờ dev pro giải thích thêm.

4 Likes

Khi đã “xịn xò” thì người ta dùng tới strategy pattern luôn chứ ai lại xài switch case nữa bạn :yum:
Thêm nữa, gõ mỏi tay hay không cũng không quan trọng nha. Như cái pattern kia gõ còn nhiều hơn mớ if else mấy lần mà người ta vẫn ưu tiên đó thôi.

5 Likes

Strategy dùng để thay cho lambda mà nhỉ :slight_smile:

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?