30/09/2018, 22:31

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é tập Code viết 00:35 ngày 01/10/2018

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 nhapin b hay không thì kết quả của nhap !=bnhap == b cũng không thay đổi, luôn là TrueFalse. 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ện nhap in b.
Không hiểu tại sao không in ra TrueFalse luôn

Mr.Biz viết 00:37 ngày 01/10/2018

Cá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 :

def character(nhap):
	b =['a', 'e', 'i', 'o', 'u']
	if nhap in b:
		return True
	else:
		return False
user_input = raw_input("Enter your character : ")
print character(user_input)

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é tập Code viết 00:39 ngày 01/10/2018

Bạn thấy nó ngược chỗ nào và chưa hiểu chỗ nào ?

17XGOD viết 00:32 ngày 01/10/2018

c == b -> False, c!=b -> True là đúng rồi

Bạn thử cho powershell in ra 2 giá trị của c và b đi

Bài liên quan
0