0

みなさん、こんにちは。与えられた辞書の数字を単語に変換するコードを作成しようとしています。しかし、何も印刷されていないようです。エラーなどはありません。私は問題を見つけるために多くのことを試みましたが、それでも何もしませんでした。

6私がプログラムに入るとき、何もキックバックしません。

を出力する必要があります[six]

間隔の問題だと思いましたが、そうではないと思います。

これが私が持っているものです

import string


value = input("Enter a number 1 - 9 separted by commas: ")

def user_input(value):
    numbers = {}
    user_list = value.split(',')
    numbers = [(x.strip()) for x in user_list]
    return numbers
    print(numbers)

user_input(value)

numbers = user_input()

unit_number = {0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 
           5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine'}

def convert_n_to_w(numbers):
    i = len(str(numbers))

    if i == 0:
        return

    if i == 1:
        return unit_number[numbers]

    print(unit_number[numbers])

convert_n_to_w(numbers)

誰かが私が間違ったことを見せてくれませんか?

アップデート!!!!!!!

追加convert_n_to_w(numbers) して教えてくれました

line 38, in <module> convert_n_to_w(numbers)

NameError: name 'numbers' is not defined

私がそれを定義したと思ったとき。

4

5 に答える 5

3

printステートメントprint(unit_number[numbers])convert_n_to_w関数内にあります。その関数はどの時点でも呼び出さないため、printステートメントは実行されません。

関数を呼び出すか、関数からprintステートメントを取り出します。

于 2013-03-24T11:52:35.527 に答える
2

コードにはいくつかの問題があります。コードを変更したいと思います。以下のコードはうまく機能しますが、pythonicではありません。

value = input("Enter a number 1 - 9 separted by commas: ")

def user_input(value):
    if isinstance(value, tuple):
        return list(value)
    else:
        user_list = value.split(',')
        numbers = [(x.strip()) for x in user_list]
        return numbers


unit_number = {0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 
           5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine'}

def convert_n_to_w(numbers):
    for n in numbers:
        print(unit_number[int(n)])

numbers = user_input(value)

convert_n_to_w(numbers)
于 2013-03-24T12:00:08.830 に答える
2
#Dictionaries for reference
ones = {"1":"One","2":"Two","3":"Three","4":"Four","5":"Five","6":"Six", "7":"Seven","8":"Eight","9":"Nine"}
afterones = {"10":"Ten","11":"Eleven","12":"Twelve","13":"Thirteen","14":"Fourteen","15":"Fifteen","16":"Sixteen", "17":"Seventeen","18":"Eighteen","19":"Nineteen"}
tens = {"2":"Twenty","3":"Thirty","4":"Fourty","5":"Fifty","6":"Sixty", "7":"Seventy","8":"Eighty","9":"Ninety"}
grand={0:" Billion, ",1:" Million, ",2:" Thousand, ",3:""}

#Function converting number to words of 3 digit
def num_to_wrds(val):
    if val != "000":
        ans = ""
        if val[0] in ones:
            x = val
            ans = ans + ones[val[0]] + " Hundered and "
        if val[1:] in afterones:
            ans = ans + afterones[val[1:]] + " "
        elif val[1] in tens:
            ans = ans + tens[val[1]] + " "
        if val[2] in ones:
            ans = ans + ones[val[2]]
        return ans


num = input("Enter the number: ") 

# Paddiing with zeros
pad = 12-len(str(num))
numinwrds = "0"*pad + str(num)

final =""
numlis = [numinwrds[0:3],numinwrds[3:6],numinwrds[6:9],numinwrds[9:12]]

for key,grp in enumerate(numlis):

    if grp!="000":
        final = final + num_to_wrds(grp) + grand[key]

print final

これは、数十億の値まで出力します。グランドディクショナリにさらに追加できます。完全に機能します。注:最大値を降順で配置してください。

于 2017-02-18T01:03:55.060 に答える
1

あなたは数字を印刷する前returnから。user_inputその関数のprintステートメントに到達することはありません。

アップデート:

そして、@ Joniが示すように、関数convert_n_to_wをまったく呼び出していません。

したがって、printステートメントは実行されません。

于 2013-03-24T11:52:36.103 に答える
0
def n2w(num):
    unit_number = {0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 
    5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine'}
    st=""
    while num>0 :
        a=num%10
        for i,j in unit_number.items():
            if i==a:
                st=unit_number[i]+" "+st
        num=num//10
        st=st.rstrip()
    return (st)
于 2018-06-07T15:28:16.380 に答える