Το μόνο που μπορεί να σε δυσκολεύει πολύ είναι το πως να ξεχωρίσεις τα δεδομένα σου από την συμβολοσειρά. Σου έφτιαξα μία συνάρτηση που κάνει αυτήν την δουλεία.
Η συνάρτηση πέρνει ένα όρισμα string πχ 125F, και σου επιστρέφει τον αριθμό 125 και τον χαρακτήρα F σε ένα tuple (To tuple είναι σαν την λίστα στην python, άλλα δεν μπορείς να αλλάξης τα στοιχεία της). Η συνάρτηση σου επιστρέφει None έαν ο χρήστης δεν σου δώσει σωστά το δεδομένο. Πχ εάν σου δώσει 124asddF ή 125D.
Συμβουλή: Μην διαβάσεις τον κωδικά απευθείας από αυτό το post, κάνε τον copy-paste στον κειμενογράφο που χρησιμοποιείς για να μπορείς να τον διαβάσεις ευκολότερα.
def string_to_num(string):
number = ""
list_string = list(string) #Δημιουργία μιας λίστας με τους χαρακτήρες της string.
temp_type = list_string[ len(list_string) - 1 ] #Πέρνω το τελευταίο χαρακτήρα της string.
#Εάν ο τελευταίος χαρακτήρας δεν είναι c ή f τότε ο χρήστης δεν έδωσε έγκηρη θερμοκρασία.
if temp_type.lower() != "c" and temp_type.lower() != "f":
return None
#To loop τρέχει μέχρι το προ τελευταίο στηχείο της λίστας.
for i in range(0, len(list_string) - 1):
number += list_string[i] #Δημιουργία του αριθμού χωρίς την κατάλληξη c ή f.
#Προσπάθεια μετατροπής σε πραγματικό αριθμο.
try:
number = float(number)
#Η μετατροπή απέτυχε.
except:
#Θα αποτύχη εάν ο χρήστης δεν δώσει χαρακτήρες αριθμών.
#πχ 12asdF (Λάθος δεδομένο από τον χρήστη)
#123F (Σωστό δεδομένο του χρήστη.)
return None
#Εφόσον όλα πήγαν καλά, επιστρέφω τον αριθμό και τον τύπο της θερμοκρασίας.
return number, temp_type
Ελπίζω να καταλάβεις πως δουλεύει ο κώδικας που σε έδωσα. Κατά τα άλλα θα πρέπει να ξέρεις
τη να κάνεις με τις πληροφορίες που σε επιστρέφει αυτήν η συνάρτηση.
Θα σε δώσω και ένα παράδειγμα για να καταλάβεις.
Πες ότι ο χρήστης σε δίνει: "125C"
άμα περάσεις στην συνάρτηση το "125C" τότε θα σου επιστρέψει (125, "C")
Πρώτον με το "C" γνωρίζεις ότι ο χρήστης σε έδωσε θερμοκρασία σε Κελσίου, άρα
πρέπει να το μετατρέψεις σε φαρεναιτ. Και δεύτερον έχεις έτοιμο τον αριθμό 125
και μπορείς να κάνεις πράξεις σε αυτόν.