Προσδιορίστε αν ένας αριθμός είναι ακέραιος ή δεκαδικός στην Python.
Οι ακόλουθες περιπτώσεις επεξηγούνται με παραδείγματα κωδικών.
- Καθορίζει αν ένας αριθμός είναι ακέραιος int ή float κινητής υποδιαστολής.:
isinstance()
- Καθορίζει αν ένας αριθμός τύπου float είναι ακέραιος (0 δεκαδικά ψηφία):
float.is_integer()
- Προσδιορίζει αν μια συμβολοσειρά αριθμών είναι ακέραιος αριθμός
Για να λάβετε τις ακέραιες και δεκαδικές τιμές ενός δεκαδικού αριθμού, ανατρέξτε στο ακόλουθο άρθρο.
Ανατρέξτε στο ακόλουθο άρθρο για πληροφορίες σχετικά με τον προσδιορισμό του αν μια συμβολοσειρά είναι αριθμός (συμπεριλαμβανομένων των κινεζικών αριθμών κ.λπ.) και όχι αν είναι ακέραιος ή δεκαδικός αριθμός.
Καθορίζει αν ένας αριθμός είναι ακέραιος ή κινητής υποδιαστολής: isinstance()
Ο τύπος ενός αντικειμένου μπορεί να ληφθεί με την ενσωματωμένη συνάρτηση type().
i = 100
f = 1.23
print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>
isinstance(object, type)
Αυτή η ενσωματωμένη συνάρτηση μπορεί να χρησιμοποιηθεί για να προσδιοριστεί αν ένα αντικείμενο είναι συγκεκριμένου τύπου. Μπορεί να χρησιμοποιηθεί για να προσδιοριστεί αν ένας αριθμός είναι ακέραιος ή τύπου κινητής υποδιαστολής.
print(isinstance(i, int))
# True
print(isinstance(i, float))
# False
print(isinstance(f, int))
# False
print(isinstance(f, float))
# True
Στην περίπτωση αυτή, κρίνει μόνο τον τύπο, οπότε δεν μπορεί να κρίνει αν μια τιμή τύπου float είναι ακέραιος (με δεκαδικό σημείο 0) ή όχι.
f_i = 100.0
print(type(f_i))
# <class 'float'>
print(isinstance(f_i, int))
# False
print(isinstance(f_i, float))
# True
Καθορίζει αν ένας αριθμός τύπου float είναι ακέραιος (0 δεκαδικά ψηφία): float.is_integer()
Η μέθοδος is_integer() παρέχεται για τον τύπο float, η οποία επιστρέφει true αν η τιμή είναι ακέραιος και false διαφορετικά.
f = 1.23
print(f.is_integer())
# False
f_i = 100.0
print(f_i.is_integer())
# True
Για παράδειγμα, μια συνάρτηση που επιστρέφει true για έναν ακέραιο αριθμό μπορεί να οριστεί ως εξής Από την άλλη πλευρά, ένας τύπος συμβολοσειράς θα ήταν false.
def is_integer_num(n):
if isinstance(n, int):
return True
if isinstance(n, float):
return n.is_integer()
return False
print(is_integer_num(100))
# True
print(is_integer_num(1.23))
# False
print(is_integer_num(100.0))
# True
print(is_integer_num('100'))
# False
Προσδιορίζει αν μια συμβολοσειρά αριθμών είναι ακέραιος αριθμός
Αν θέλετε να προσδιορίσετε ότι μια συμβολοσειρά ακέραιων ψηφίων είναι επίσης ακέραιος αριθμός, είναι δυνατές οι ακόλουθες συναρτήσεις.
Για τιμές που μπορούν να μετατραπούν σε τύπο float με τη μέθοδο float(), η μέθοδος is_integer() εφαρμόζεται μετά τη μετατροπή σε float και επιστρέφεται το αποτέλεσμα.
def is_integer(n):
try:
float(n)
except ValueError:
return False
else:
return float(n).is_integer()
print(is_integer(100))
# True
print(is_integer(100.0))
# True
print(is_integer(1.23))
# False
print(is_integer('100'))
# True
print(is_integer('100.0'))
# True
print(is_integer('1.23'))
# False
print(is_integer('string'))
# False
Ανατρέξτε στο ακόλουθο άρθρο για λεπτομέρειες σχετικά με τη μετατροπή συμβολοσειρών σε αριθμούς.
Ανατρέξτε στο ακόλουθο άρθρο για λεπτομέρειες σχετικά με τον προσδιορισμό του κατά πόσον μια συμβολοσειρά είναι αριθμός (συμπεριλαμβανομένων των κινεζικών αριθμών κ.λπ.).