Hỏi về sự kết hợp của hàm lambda

em có 1 bài tập như sau: Cho các cặp chữ và số {(a,1), (b,3), (c,5), (d,10)}. Hãy viết hàm nhập một xâu và chuyển tương ứng nếu gặp ký tự “a” thì đổi thành 1, “b” thành 3, “c” thành 5 và ’d’ thành 10.
và em xây dựng kiểu như này:

xau = lambda a: input("a","b","c","d")
#hoặc theo cách này xau = lambda a: input(" ")
#hoặc theo cách này xau =lambda a: input("abcd")
#hoặc thay dấu : bằng dấu = 
"a" = 1
"b" = 3
"c" = 5
"d" = 10
print ("Moi ban nhap xau vao:  ",  xau)

nhưng cuối cùng chương trình vẫn không chạy được, dù chả báo sai. Vậy mn cho em hỏi em còn thiếu sót ở chỗ nào hay sai ở đâu hoặc có cần kết nối thêm vòng lặp gì(em xem trên mạng nhưng cũng chưa ai đề cập đến lambda có kết hợp được với vòng lặp không) để nhập được nhiều xâu cùng 1 lúc không ạ. Em xin cảm ơn ạ

Hàm lambda thì cũng là 1 hàm, cần input và output, hàm input thì nhận input từ bàn phím và trả về str. Bạn xem lại khái niệm về hàm trước khi làm bài.

1 Like

OK bạn, để mình nghĩ tiếp. Mình mới học nên chưa biết nhiều.

Bài này thì cứ làm y như yêu cầu của đề thôi. Và quan trọng là, trong đề làm gì có yêu cầu dùng lambda đâu nhỉ. Ví dụ một phần code mẫu:

#Cho các cặp chữ và số {(a,1), (b,3), (c,5), (d,10)}
cap_chu_so = [('a', 1), ('b', 3)]

#Hãy viết hàm
def main():
    #nhập một xâu
    xau = input("Nhap mot xau: ")

    #chuyển tương ứng... phần còn lại này tự làm tiếp nha bạn
    # Ví dụ: xau = "abcd" => sau khi chuyển xau="13cd"


    # In xau kết quả:
    print(xau)

# Cuối cùng gọi hàm cho nó chạy:
main()
4 Likes

em đang làm bài với yêu cầu là phải làm với lambda ạ, sr em quên chưa đề cập tới. Cái bài này theo đề cương ôn học kỳ ạ

Nếu đề bắt buộc dùng lambda, thì có lẽ chỗ dễ nhất là hàm lambda chuyển 1 ký tự thành giá trị nó chuyển thành. Rồi dùng hàm lambda này cho từng ký tự trong xau. (Advance hơn xíu thì dùng hàm lambda này kết hợp với hàm map)

4 Likes

cảm ơn anh đã hướng dẫn, em phải làm với map ạ. Dù chưa nghĩ ra phương án bây giờ nhưng em sẽ cố gắng nghiên cứu thêm :hugs::hugs::hugs:

#Cho các cặp chữ và số {(a,1), (b,3), (c,5), (d,10)}
#Hãy viết hàm
(lambda func: print(func().replace('a', '1').replace('b', '3').replace('c', '5').replace('d', '10')))(lambda : input('Nhap vao xau: '))
2 Likes

Mình cảm ơn câu trả lời của bạn :wink:, nhưng nó lại yêu cầu lambda phải kết hợp với map, bạn có cách nào giúp mình không?

ok mình cũng đang tìm cách kết hợp với map đây

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