Προς το περιεχόμενο

Ολογράφως με python


thiva7

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Μάλλον κάτι τέτοιο θες

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  Πεντακόσια 

κ.οκ

Θα χρειαστείς και κάποια βοηθητικα πεδία για να κάνεις συνδυασμούς...αλλα θα τα βρεις στην πορεία.

Επεξ/σία από masteripper
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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()

Αυτήν είναι η δική μου εκδοχή όταν είχα πειραματιστεί με το ίδιο προτζεκτ

Ελπίζω να σε βοηθήσει.

  • Thanks 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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()

Αυτήν είναι η δική μου εκδοχή όταν είχα πειραματιστεί με το ίδιο προτζεκτ

Ελπίζω να σε βοηθήσει.

Και αυτό κάνει ακριβώς αυτό που θέλω... 

Σε ευχαριστώ πολύ για το κώδικα 

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 1 χρόνο αργότερα...

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...