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
nhap
cóin b
hay không thì kết quả củanhap !=b
vànhap == b
cũng không thay đổi, luôn làTrue
và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
True
vàFalse
luô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 -> True
là đúng rồiBạn thử cho powershell in ra 2 giá trị của c và b đi