01/10/2018, 09:59

Tại sao hàm tìm giá trị nhỏ nhất luôn trả về None

Em có 1 đoạn code sau

 # chuong trinh yeu cau nhap 1 loat so sau do tra ve
 # so lon nhat, so nho nhat
 n = raw_input("Enter a number: ")
 count = 0
 total = 0
 lon = None
 nho = None
 while n != "done":
     try:
         kiemtra = int(n)
         if kiemtra > lon: # đoạn này kiếm số lớn nhất, chạy được
             lon = kiemtra
         elif kiemtra < nho: # đoạn này kiếm số nhỏ nhất, luôn trả giá trị là None
             nho = kiemtra
         n = raw_input("Enter a number: ")
     except:
         print "Wrong number"
         n = raw_input("Enter a number: ")

print lon, nho

Đoạn code dùng để kiếm số lớn nhất và nhỏ nhất trong các số đã nhập, với số lớn nhất thì đã làm ra nhưng không hiểu sao số nhỏ nhất thì lúc nào nó cũng hiện là None, em không biết mình đã sai ở đâu nữa.

Đây là màn hình lúc chạy code

HK boy viết 12:03 ngày 01/10/2018

Bạn phải gán lon, nho bằng 1 số nào đó chứ.

Chicken viết 12:09 ngày 01/10/2018

Chắc bị lỗi so sánh với None, bạn thử bỏ phần khởi tạo giá trị ban đầu cho nó thử xem. bỏ phần
lon = None
nho = None

KYN viết 12:15 ngày 01/10/2018
>>> 0 < None
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    0 < None
TypeError: unorderable types: int() < NoneType()
>>> 5 > None
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    5 > None
TypeError: unorderable types: int() > NoneType()
>>> 

sang python3 là Exception luôn nha…

HK boy viết 12:01 ngày 01/10/2018

Lỗi ở đó. Phải gán nho bằng 1 số cực to chứ.

rogp10 viết 12:06 ngày 01/10/2018

Cũng không hẳn trong py không có số lớn với nhỏ nhất nên phải viết lặp code vậy

HK boy viết 12:15 ngày 01/10/2018

Nhưng tốt nhất là gán lon và nho ban đầu là số đầu tiên đọc được thì đâu đến nỗi khổ thế này >.<

NG viết 11:59 ngày 01/10/2018

Cũng không hẳn trong py không có số lớn với nhỏ nhất nên phải viết lặp code vậy

MAX = float('inf')
10**99 > float('inf')
False


rogp10 viết 12:11 ngày 01/10/2018

Vậy còn nhỏ hơn thì sao bạn?

NG viết 12:02 ngày 01/10/2018

chuyển thành số âm thôi

Tim Jonh viết 12:15 ngày 01/10/2018

Nếu bỏ đi thì cái bước if kia làm sao so sánh được hả bạn

Tim Jonh viết 12:09 ngày 01/10/2018

None là nhỏ nhất à, sao em đọc trong các tài liệu None là trạng thái trống, kiểu như không có gì nhưng vẫn đánh dấu để đó ấy

Tim Jonh viết 12:05 ngày 01/10/2018

Theo em nghĩ nếu đã gán thì phải gán số lớn nhất hoặc số nhỏ nhất thì mới được, chứ gán số bất kỳ nào cũng bỏ sót cả, nhưng em không biết cách viết số lớn nhất hay nhỏ nhất trong python

Tim Jonh viết 12:11 ngày 01/10/2018

A được rồi bác ơi, chỉ cần gán biên nho là số đầu tiên nhập vào là được, tks bác nhiều

Bài liên quan
0