Chương trình Python tính can chi

Em có tạo một đoạn code để tính can chi của từng năm:

can = ['Canh', 'Tân', 'Nhâm,', 'Quý', 'Giáp', 'Ất', 'Bính', 'Đinh','Mậu','Kỷ']
chi = ['Thân', 'Dậu', 'Tuất', 'Hợi','Tí','Sửu','Dần', 'Mão', 'Thìn', 'Tị', 'Ngọ', "Mùi"]

def year(prompt):
    x = input(prompt)
    if x % 10 == i and x % 12 == j:
	    return can[i], chi[j]

year(2000)
2000
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in year
TypeError: not all arguments converted during string formatting

Cho em hỏi là em sai ở đâu ạ?

  • Code bạn đang sử dụng cả tab và space để indent (dòng return).
  • prompt của bạn là cái gì? Bạn nạp 2000 vào hàm year(...) để làm gì?

Lỗi xảy ra khi hàm input(prompt) phải nạp vào 1 string, chứ không phải 1 số.

  • i, j của bạn chui từ đâu ra vậy?
8 Likes

== là để so sánh
thớt đừng làm khó mình thế

return can[x%10], chi[x%12]

4 Likes

Bạn có thể viết lại cho mình code chuẩn không ạ? Mình sửa rồi vẫn lỗi. Mình càm ơn.

P/s: Đây là bài mình tự nghĩ ra chứ không phải bài tập về nhà, nhưng nghĩ mãi chưa ra cách giải. Mình rất muốn biết cách làm để học hỏi thêm.

can = ['Canh', 'Tân', 'Nhâm', 'Quý', 'Giáp', 'Ất', 'Bính', 'Đinh','Mậu','Kỷ']
chi = ['Thân', 'Dậu', 'Tuất', 'Hợi','Tí','Sửu','Dần', 'Mão', 'Thìn', 'Tị', 'Ngọ', "Mùi"]

nam = int(input("Nhap vao nam: "))
vitri_can = nam % 10
vitri_chi = nam % 12
print(can[vitri_can] + " " + chi[vitri_chi])
1 Like

Mình có viết 1 thư viện nguồn mở cho việc tính can/chi âm lịch và cả lập lá số ở đây: https://github.com/doanguyen/lasotuvi

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