thiva7 Δημοσ. 22 Φεβρουαρίου 2022 Δημοσ. 22 Φεβρουαρίου 2022 Καλησπέρα, Πως μπορώ να μετατρέψω αριθμούς σε κείμενο ολογράφως? Ευχαριστώ
NikosKallithea Δημοσ. 22 Φεβρουαρίου 2022 Δημοσ. 22 Φεβρουαρίου 2022 Με μια βαση δεδομένων, εισάγεις τον αριθμο και διπλα το ολογράφως και καθε φορά κανεις αναζήτηση. 1
masteripper Δημοσ. 23 Φεβρουαρίου 2022 Δημοσ. 23 Φεβρουαρίου 2022 (επεξεργασμένο) Μάλλον κάτι τέτοιο θες def split(word): return [char for char in word] amount = '123495' amount_chars = split(amount) print(amount_chars) amount_chars.reverse() for i in range(len(amount_chars)): print(amount_chars[i]) if amount_chars[i] == '5' and i ==0 : print('Πέντε') if amount_chars[i] == '9' and i ==1 : print('Ενενήντα') if amount_chars[i] == '4' and i ==2 : print('Τετρακόσια') if amount_chars[i] == '3' and i ==3 : print('Τρεις Χιλιάδες') if amount_chars[i] == '2' and i ==4 : print('Είκοσι') if amount_chars[i] == '1' and i ==5 : print('Εκατόν') Για να αποφύγει τα άπειρα If θα χρησιμοποιήσεις μια βάση για να φτιάξεις 1 πίνακα της μορφής ID Number Pos Word 1 1 0 ...... 5 5 0 Πέντε ..... 15 5 1 Πενήντα 25 5 2 Πεντακόσια κ.οκ Θα χρειαστείς και κάποια βοηθητικα πεδία για να κάνεις συνδυασμούς...αλλα θα τα βρεις στην πορεία. Επεξ/σία 23 Φεβρουαρίου 2022 από masteripper 1
virxen75 Δημοσ. 23 Φεβρουαρίου 2022 Δημοσ. 23 Φεβρουαρίου 2022 https://stackoverflow.com/questions/8982163/how-do-i-tell-python-to-convert-integers-into-words 1
thiva7 Δημοσ. 23 Φεβρουαρίου 2022 Μέλος Δημοσ. 23 Φεβρουαρίου 2022 Καλησπέρα Τελικά βρήκα αυτό εδω https://github.com/geoph9/Numbers2Words-Greek Για όποιον ενδιαφέρεται να το δουλέψει
bilakos26 Δημοσ. 23 Φεβρουαρίου 2022 Δημοσ. 23 Φεβρουαρίου 2022 NUM = [ '', 'Ενα', 'Δυο', 'Τρια', 'Τεσσερα', 'Πεντε', 'Εξι', 'Εφτα', 'Οχτω', 'Εννια' ] NUM2 = [ '', 'Ενα', 'Δυο', 'Τρεις', 'Τεσσερις', 'Πεντε', 'Εξι', 'Εφτα', 'Οχτω', 'Εννια' ] NUM3 = [ '', 'Δυο', 'Τρεις', 'Τεσσερις', 'Πεντε', 'Εξι', 'Εφτα', 'Οχτω', 'Εννια' ] DOZ = [ '', 'Εικοσι', 'Τριαντα', 'Σαραντα', 'Πενηντα', 'Εξιντα', 'Εβδομηντα', 'Ογδοντα', 'Ενενηντα' ] DOZ2 = [ 'Δεκα', 'Εντεκα', 'Δωδεκα', 'Δεκατρια', 'Δεκατεσσερα', 'Δεκαπεντε', 'Δεκαεξι', 'Δεκαεφτα', 'Δεκαοχτω', 'Δεκαεννια' ] DOZ2_1 = [ 'Δεκα', 'Εντεκα', 'Δωδεκα', 'Δεκατρεις', 'Δεκατεσσερις', 'Δεκαπεντε', 'Δεκαεξι', 'Δεκαεφτα', 'Δεκαοχτω', 'Δεκαεννια' ] HUN = [ 'Εκατον', 'Διακοσια', 'Τριακοσια', 'Τετρακοσια', 'Πεντακοσια', 'Εξακοσια', 'Εφτακοσια', 'Οχτακοσια', 'Εννιακοσια' ] HUN2 = [ '', 'Εκατον', 'Διακοσια', 'Τριακοσια', 'Τετρακοσια', 'Πεντακοσια', 'Εξακοσια', 'Εφτακοσια', 'Οχτακοσια', 'Εννιακοσια' ] TH = [ 'Χιλια', 'Χιλιαδες' ] def main(): val = give_value() val = val.split('.') value = olografos(val) print(value) def give_value(): final_value = '1808.00' return final_value def olografos(val): # ΕΥΡΩ len_val0 = len(val[0]) if len_val0 == 1: # ΜΕχρι το 9 value = NUM[int(val[0])] elif len_val0 == 2: # ΜΕχρι το 99 VAL = val[0] f_val = 20 - int(VAL) f_val = 10 - f_val if f_val >= 0 and f_val <= 9: value = DOZ2[f_val] else: value1 = DOZ[int(VAL[0])-1] value2 = NUM[int(VAL[1])] value = f'{value1} {value2}' elif len_val0 == 3: # ΜΕχρι το 999 VAL = val[0] hun_val = HUN[int(VAL[0])-1] f_val = 20 - int(VAL[1] + VAL[2]) f_val = 10 - f_val f2_val = VAL[1] + VAL[2] if int(f2_val[0]) == 0: num_val = NUM[int(f2_val[1])] value = f'{hun_val} {num_val}' else: if f_val >= 0 and f_val <= 9: value1 = DOZ2[f_val] value = f'{hun_val} {value1}' else: value1 = DOZ[int(VAL[1])-1] value2 = NUM[int(VAL[2])] value = f'{hun_val} {value1} {value2}' elif len_val0 == 4: # ΜΕχρι το 9999 VAL = val[0] if int(VAL[0]) == 1: th_val = NUM3[int(VAL[0])-1] + TH[0] else: th_val = f'{NUM3[int(VAL[0])-1]} {TH[1]}' hun_val = HUN2[int(VAL[1])] f_val = 20 - int(VAL[2] + VAL[3]) f_val = 10 - f_val f2_val = VAL[2] + VAL[3] if int(f2_val[0]) == 0: num_val = NUM[int(f2_val[1])] value = f'{th_val} {hun_val} {num_val}' else: if f_val >= 0 and f_val <= 9: value1 = DOZ2[f_val] value = f'{th_val} {hun_val} {value1}' else: value1 = DOZ[int(VAL[2])-1] value2 = NUM[int(VAL[3])] value = f'{th_val} {hun_val} {value1} {value2}' # ΛΕΠΤΑ try: VAL = val[1] value_2 = '' f_val = 20 - int(VAL) f_val = 10 - f_val try: f2_val = VAL[0] + VAL[1] except Exception: f2_val = VAL[0] if int(f2_val[0]) == 0: num_val = NUM[int(f2_val[1])] if num_val == '': num_val = 'ΜΗΔΕΝ' value_2 = num_val else: if f_val >= 0 and f_val <= 9: value_2 = DOZ2[f_val] else: try: value1 = DOZ[int(VAL[0])-1] value2 = NUM[int(VAL[1])] value_2 = f'{value1} {value2}' except Exception: try: value1 = DOZ[int(VAL[0])-1] value_2 = f'{value1}' except Exception: value2 = NUM[int(VAL[1])] value_2 = f'{value2}' value = f'{value} ΕΥΡΩ ΚΑΙ {value_2} ΛΕΠΤΑ' except Exception: value = f'{value} ΕΥΡΩ ΚΑΙ ΜΗΔΕΝ ΛΕΠΤΑ' return value.upper() main() Αυτήν είναι η δική μου εκδοχή όταν είχα πειραματιστεί με το ίδιο προτζεκτ Ελπίζω να σε βοηθήσει. 1
thiva7 Δημοσ. 24 Φεβρουαρίου 2022 Μέλος Δημοσ. 24 Φεβρουαρίου 2022 10 ώρες πριν, bilakos26 είπε NUM = [ '', 'Ενα', 'Δυο', 'Τρια', 'Τεσσερα', 'Πεντε', 'Εξι', 'Εφτα', 'Οχτω', 'Εννια' ] NUM2 = [ '', 'Ενα', 'Δυο', 'Τρεις', 'Τεσσερις', 'Πεντε', 'Εξι', 'Εφτα', 'Οχτω', 'Εννια' ] NUM3 = [ '', 'Δυο', 'Τρεις', 'Τεσσερις', 'Πεντε', 'Εξι', 'Εφτα', 'Οχτω', 'Εννια' ] DOZ = [ '', 'Εικοσι', 'Τριαντα', 'Σαραντα', 'Πενηντα', 'Εξιντα', 'Εβδομηντα', 'Ογδοντα', 'Ενενηντα' ] DOZ2 = [ 'Δεκα', 'Εντεκα', 'Δωδεκα', 'Δεκατρια', 'Δεκατεσσερα', 'Δεκαπεντε', 'Δεκαεξι', 'Δεκαεφτα', 'Δεκαοχτω', 'Δεκαεννια' ] DOZ2_1 = [ 'Δεκα', 'Εντεκα', 'Δωδεκα', 'Δεκατρεις', 'Δεκατεσσερις', 'Δεκαπεντε', 'Δεκαεξι', 'Δεκαεφτα', 'Δεκαοχτω', 'Δεκαεννια' ] HUN = [ 'Εκατον', 'Διακοσια', 'Τριακοσια', 'Τετρακοσια', 'Πεντακοσια', 'Εξακοσια', 'Εφτακοσια', 'Οχτακοσια', 'Εννιακοσια' ] HUN2 = [ '', 'Εκατον', 'Διακοσια', 'Τριακοσια', 'Τετρακοσια', 'Πεντακοσια', 'Εξακοσια', 'Εφτακοσια', 'Οχτακοσια', 'Εννιακοσια' ] TH = [ 'Χιλια', 'Χιλιαδες' ] def main(): val = give_value() val = val.split('.') value = olografos(val) print(value) def give_value(): final_value = '1808.00' return final_value def olografos(val): # ΕΥΡΩ len_val0 = len(val[0]) if len_val0 == 1: # ΜΕχρι το 9 value = NUM[int(val[0])] elif len_val0 == 2: # ΜΕχρι το 99 VAL = val[0] f_val = 20 - int(VAL) f_val = 10 - f_val if f_val >= 0 and f_val <= 9: value = DOZ2[f_val] else: value1 = DOZ[int(VAL[0])-1] value2 = NUM[int(VAL[1])] value = f'{value1} {value2}' elif len_val0 == 3: # ΜΕχρι το 999 VAL = val[0] hun_val = HUN[int(VAL[0])-1] f_val = 20 - int(VAL[1] + VAL[2]) f_val = 10 - f_val f2_val = VAL[1] + VAL[2] if int(f2_val[0]) == 0: num_val = NUM[int(f2_val[1])] value = f'{hun_val} {num_val}' else: if f_val >= 0 and f_val <= 9: value1 = DOZ2[f_val] value = f'{hun_val} {value1}' else: value1 = DOZ[int(VAL[1])-1] value2 = NUM[int(VAL[2])] value = f'{hun_val} {value1} {value2}' elif len_val0 == 4: # ΜΕχρι το 9999 VAL = val[0] if int(VAL[0]) == 1: th_val = NUM3[int(VAL[0])-1] + TH[0] else: th_val = f'{NUM3[int(VAL[0])-1]} {TH[1]}' hun_val = HUN2[int(VAL[1])] f_val = 20 - int(VAL[2] + VAL[3]) f_val = 10 - f_val f2_val = VAL[2] + VAL[3] if int(f2_val[0]) == 0: num_val = NUM[int(f2_val[1])] value = f'{th_val} {hun_val} {num_val}' else: if f_val >= 0 and f_val <= 9: value1 = DOZ2[f_val] value = f'{th_val} {hun_val} {value1}' else: value1 = DOZ[int(VAL[2])-1] value2 = NUM[int(VAL[3])] value = f'{th_val} {hun_val} {value1} {value2}' # ΛΕΠΤΑ try: VAL = val[1] value_2 = '' f_val = 20 - int(VAL) f_val = 10 - f_val try: f2_val = VAL[0] + VAL[1] except Exception: f2_val = VAL[0] if int(f2_val[0]) == 0: num_val = NUM[int(f2_val[1])] if num_val == '': num_val = 'ΜΗΔΕΝ' value_2 = num_val else: if f_val >= 0 and f_val <= 9: value_2 = DOZ2[f_val] else: try: value1 = DOZ[int(VAL[0])-1] value2 = NUM[int(VAL[1])] value_2 = f'{value1} {value2}' except Exception: try: value1 = DOZ[int(VAL[0])-1] value_2 = f'{value1}' except Exception: value2 = NUM[int(VAL[1])] value_2 = f'{value2}' value = f'{value} ΕΥΡΩ ΚΑΙ {value_2} ΛΕΠΤΑ' except Exception: value = f'{value} ΕΥΡΩ ΚΑΙ ΜΗΔΕΝ ΛΕΠΤΑ' return value.upper() main() Αυτήν είναι η δική μου εκδοχή όταν είχα πειραματιστεί με το ίδιο προτζεκτ Ελπίζω να σε βοηθήσει. Και αυτό κάνει ακριβώς αυτό που θέλω... Σε ευχαριστώ πολύ για το κώδικα 1
jomertz Δημοσ. 7 Αυγούστου 2023 Δημοσ. 7 Αυγούστου 2023 Έφτιαξα αυτό το package για μετατροπή σε ολογραφώς - έχει και για ευρώ, και για γένη και κλίσεις 3
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα