Cho mình (newbie) hỏi 1 chút về đoạn code python này :
Mình mới lọ mọ tự học python, tìm thấy mấy bài tập trên mạng ở trang này : http://www.ling.gu.se/~lager/python_exercises.html
Ở bài số 4 :
Write a function that takes a character (i.e. a string of length 1) and returns True if it is a vowel, False otherwise.
Code của mình viết như sau :
> def character(nhap):
> b =['a', 'e', 'i', 'o', 'u']
> if nhap in b:
> print nhap != b
> else:
> print nhap == b
>
> user_input = raw_input("Enter your character : ")
> character(user_input)
Dù chương trình chạy đúng theo đề bài là nhập vào nguyên âm thì trả về True, ngược lại thì trả về False nhưng mình thắc mắc ở chỗ “print nhap !=b” và “print nhap == b”, có vẻ nó hơi ngược ngược theo ý mình viết code.
Mình test thử trong py thì ra như thế này :
> Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
> >>> b = ['a']
> >>> c = 'a'
> >>> c == b
> False
> >>> c != b
> True
> >>>
Mong các bạn giải thích giùm mình cách hoạt động của toán tử so sánh trên.
Cám ơn.





Bạn sửa lại format code xíu cho dễ nhìn nhé.
Cách viết trên làm bạn thấy ngược ngược cũng đúng và cũng dễ gây hiểu nhầm.
Việc
nhapcóin bhay không thì kết quả củanhap !=bvànhap == bcũng không thay đổi, luôn làTruevàFalse. Viết vậy dễ làm người khác hiểu nhầm kết quả của phép so sánh phụ thuộc vào điều kiệnnhap in b.Không hiểu tại sao không in ra
TruevàFalseluônCám ơn bạn, code trên là mình thử, còn code này là mình viết đúng theo đề bài :
Chỉ là thắc mắc cái code ở trên nó hơi ngược ngược nhưng vẫn đáp ứng đc đề bài đưa ra. Mình chỉ ko hiểu cách hoạt động của toán tử so sánh đó thôi.
Bạn thấy nó ngược chỗ nào và chưa hiểu chỗ nào ?
c == b -> False, c!=b -> Truelà đúng rồiBạn thử cho powershell in ra 2 giá trị của c và b đi