Với số nguyên, kiểm tra chẵn/lẻ rất đơn giản qua chữ số cuối. Nhưng với số thực (floating point), không thể dùng cách đó vì phần thập phân. Ví dụ: 200.290 là số lẻ dù chữ số cuối là 0.
Cách giải quyết: chuyển số thành chuỗi, duyệt từ phải sang trái, bỏ qua các số 0 ở cuối phần thập phân, khi gặp dấu chấm thì bỏ qua, chữ số khác 0 đầu tiên gặp được sẽ quyết định chẵn/lẻ.
Giải thuật
- Chuyển số thành chuỗi
s. - Duyệt ngược từ cuối chuỗi:
- Bỏ qua các '0' nếu chưa gặp dấu chấm.
- Gặp dấu chấm thì đánh dấu đã qua phần thập phân.
- Chữ số đầu tiên không phải '0' và không phải dấu chấm: kiểm tra chẵn/lẻ.
Mã ví dụ
def solve(n):
s = str(n)
flag = False
for i in range(len(s) - 1, -1, -1):
if s[i] == '0' and not flag:
continue
if s[i] == '.':
flag = True
continue
if int(s[i]) % 2 == 0:
return "Even"
return "Odd"
n = 200.290
print(solve(n))
Đầu vào
200.290
Đầu ra
Odd