0

私は Python の初心者プログラマーで、いくつかのコードについて支援が必要です。添付は私が取り組んできたコードです。目的は、305.67 のような金額を取得し、その数値を "Three Hundred Five Dollars and Sixty Seven Cents" のようなテキスト フレーズに変換することです。これまでのところ、ほとんどのコードをテキストに分割することができましたが、特殊なケースである 11 から 19 の数字にはまだ問題があります。プログラムが 11-19 を適切に適用する場所と、不要な場合に「ZERO」文字列を削除するタイミングを決定する方法を理解する助けが必要です。プログラムを実行すると、私が言っていることがわかります。以下のメイン関数のループは、関数に応じて希望する量を指定してループを実行します。また、305.67 や 45 などの数値版のお金を取る「getDollarFormatText」という関数があります。13 テキスト形式で表示します。私が遭遇する問題は、プログラムに小数を無視させ、すべてを小数の左右に適切に変換させる方法です。これはロードされた問題であり、私はこれを徹底的に感謝します. 基本的に、この問題は簡単に修正できますが、対処方法がわかりません。コードは、2 桁の数字に取り組む関数から始まります (1 桁の数字だけで区切る関数には既に取り組みました)。

def getWordForTwoDigits(amount):

#This value uses integer division to get the number of tens within a number.

    tensAmount = int(amount) / 10

#This variable uses the first function above to find the equivalent single number within the number given using modulo. (Zero through 9)

    singlesWord = getWordForDigit(int(amount)%10)

#For this decision structure, the structure is set to figuring out the number of tens within a number and appropriately naming it after its correct name (ten, twenty, etc.)


    if tensAmount == 1:

        wordTen = "TEN"

    else:

        if tensAmount == 2:

            wordTen = "TWENTY"

        else:

            if tensAmount == 3:

                wordTen = "THIRTY"
            else:

                if tensAmount == 4:

                    wordTen = "FORTY"

                else:

                    if tensAmount == 5:

                        wordTen = "FIFTY"

                    else:

                        if tensAmount == 6:

                            wordTen = "SIXTY"

                        else:

                            if tensAmount == 7:

                                wordTen = "SEVENTY"

                            else:

                                if tensAmount == 8:

                                    wordTen = "EIGHTY"

                                else:

                                    if tensAmount == 9:

                                        wordTen = "NINETY"


return "%s-%s"%(wordTen, singlesWord)

########################################

def getWordForThreeDigits(dolamount):

    hundredAmount = int(dolamount) / 100

    twoDigits = getWordForTwoDigits(int(dolamount) % 100)

    if hundredAmount == 0:

        return twoDigits

    else:

        if hundredAmount == 1:

            wordHun = "ONE HUNDRED"

        else:

            if hundredAmount == 2:

                wordHun = "TWO HUNDRED"

            else:

                if hundredAmount == 3:

                    wordHun = "THREE HUNDRED"

                else:

                    if hundredAmount == 4:

                        wordHun = "FOUR HUNDRED"

                    else:

                        if hundredAmount == 5:

                            wordHun = "FIVE HUNDRED"

                        else:

                            if hundredAmount == 6:

                                wordHun = "SIX HUNDRED"

                            else:

                                if hundredAmount == 7:

                                    wordHun = "SEVEN HUNDRED"

                                else:

                                    if hundredAmount == 8:

                                        wordHun = "EIGHT HUNDRED"

                                    else:

                                        if hundredAmount == 9:

                                            wordHun = "NINE HUNDRED"


return "%s %s"%(wordHun, twoDigits)

####################################

def getDollarFormatText(dollarAndCents):

#how would you separate 190.67 (example) to 190 and 67 and and give the text form for eacn
4

3 に答える 3

2

わかりました...ここにはたくさんの問題があります。いくつかの基本的な構文から始めましょう。

まず、Python で書式設定がどのように機能するかを確認する必要があります。適切なプロセッサを使用している場合、これは「タブ」に相当する 4 つのスペースで機能します。関数を定義する場合、その関数に含まれるすべてのものは、少なくとも 4 つのスペースで区切る必要があります。関数「getWordForTwoDigits()」には、次のものがあります。

def getWordForTwoDigits(amount):
...
return ...

その戻り値は 4 つのスペースである必要があります (ところで、両方の関数でこれを行いました)。

第二に、else-if 構造は厄介で不要です。あなたが今持っているものの代わりに、これをしてください:

if TensAmount == 1:
    do something
elif TensAmount == 2:
    do something different

次に、「elif」を 9 まで追加します。

また、あなたは言う

singlesWord = getWordForDigit(int(amount)%10)

しかし、その関数を定義することはありません。

196 と 97 を分離する方法についての実際の質問については、次のようにしてみてください。

def splitter(num):
    sep=str(num).rsplit('.', 1)
    return sep

「rsplit」は基本的に、最初のパラメーターの文字に基づいて文字列を 2 つの部分に分割します。リスト ["partone", "parttwo"] を返すため、リストの 2 つの部分を抽出し、メイン コードでそれらを int に戻す必要があります。

それが役立つことを願っています!

于 2013-10-05T03:08:50.063 に答える
1

elifの代わりに使用

else:
if  

クイックフィックスです。11-19の取り扱い部品の為、前に

tensAmount = int(amount) / 10

使用する

if 10<amount<20:
#your statements to handle 11-19
else:
#your regular statements to divide by 10 again

しかし、このように始めるために、辞書を使用することを強くお勧めします。

singleDigitDict={1="one", 2="Two"}#fill up
wordSingleDigit=singleDigitDict[singleDigitAmount]
于 2013-10-05T03:06:31.520 に答える