2017-03-22 6 views
-1

Also habe ich ein Programm in Python geschrieben, um zu versuchen, eine Zahl in die Buchstabe-Version dieser Zahl zu konvertieren. Bsp .: 323 -> dreihundertdreiundzwanzig Das Problem, das ich habe, ist, dass die eine der Variablen nicht den richtigen Wert anzeigt, wenn der Prozess abgeschlossen ist und die Ausgabe angezeigt wird. Die gewünschte Ausgabe wird in etwa wie folgt aussehen:Variable speichert nicht den richtigen Wert in Python

Enter a number under 999: 323 
323 -> three hundred twenty-three 

sieht aber stattdessen wie folgt aus:

Enter a number under 999: 323 
23 -> three hundred twenty-three 

Wenn jemand kann mir dabei helfen, herauszufinden, ich es sehr zu schätzen würde. Hier ist mein Code:

from __future__ import print_function, division 
import sys 
input = raw_input 

n = int(input("Enter a number under 999: ")) 

if n >= 999: 
print("Well, you didn't follow directions.") 
sys.exit(1) 

word = "" 
hundred = n//100 
if hundred == 1: 
    word += "one hundred" 
elif hundred == 2: 
    word += "two hundred" 
elif hundred == 3: 
    word += "three hundred" 
elif hundred == 4: 
    word += "four hundred" 
elif hundred == 5: 
    word += "five hundred" 
elif hundred == 6: 
    word += "six hundred" 
elif hundred == 7: 
    word += "seven hundred" 
elif hundred == 8: 
    word += "eight hundred" 
elif hundred == 9: 
    word += "nine hundred" 
if hundred > 0: 
    word += " " 
n = n%100 
if n == 10: 
    word += ' ten' 
elif n == 11: 
    word += ' eleven' 
elif n == 12: 
    word += ' twelve' 
elif n == 13: 
    word += ' thirteen' 
elif n == 14: 
    word += ' fourteen' 
elif n == 15: 
    word += ' fifteen' 
elif n == 16: 
    word += ' sixteen' 
elif n == 17: 
    word += ' seventeen' 
elif n == 18: 
    word += ' eighteen' 
elif n == 19: 
    word += ' nineteen' 
else: 
    ones = n%10 
    tens = n//10 
    if tens == 2: 
     word += "twenty" 
    elif tens == 3: 
     word += "thirty" 
    elif tens == 4: 
     word += "fourty" 
    elif tens == 5: 
     word += "fifty" 
    elif tens == 6: 
     word += "sixty" 
    elif tens == 7: 
     word += "seventy" 
    elif tens == 8: 
     word += "eighty" 
    elif tens == 9: 
     word += "ninety" 

    if tens > 0 and ones > 0: 
     word += '-' 

    if ones == 1: 
     word += 'one' 
    elif ones == 2: 
     word += 'two' 
    elif ones == 3: 
     word += 'three' 
    elif ones == 4: 
     word += 'four' 
    elif ones == 5: 
     word += 'five' 
    elif ones == 6: 
     word += 'six' 
    elif ones == 7: 
     word += 'seven' 
    elif ones == 8: 
     word += 'eight' 
    elif ones == 9: 
     word += 'nine' 

print("{} -> {}".format(n, word)) 

Oh und btw, ist meine Klasse zu lernen Python 3, während ein Python-2-Interpreter ist also, warum der Code einige seltsame Aspekte zu ihm hat.

+7

'n = n% 100' ändert' 323' zu '23'. – Barmar

Antwort

1

seit

n = n%100 

mutiert "n", müssen Sie zuerst den Wert von "n" zu "retten". Das einfachste Verfahren wäre:

nach

n = int(input("Enter a number under 999: ")) 

Satz eine andere Variable

ersetzen n

n = int(input("Enter a number under 999: ")) 
num = n 
erklärt dann

print("{} -> {}".format(n, word)) 

mit

print("{} -> {}".format(num, word)) 
+0

Das hat funktioniert. Vielen Dank! – jackmasterlooter

0

Code ändern zu

n = int(input("Enter a number under 999: ")) 
user_number = n 
(...) 
print("{} -> {}".format(user_number, word)) 

Jedes Mal, wenn Sie Operationen auf n tun ändern Sie es:

n = n%100 

es also speichern nur in eine andere Variable, bevor es (user_number) und drucken Sie es an die modifizierende Ende.

Verwandte Themen