将数字转换为数字 - Python

时间:2017-11-07 02:36:46

标签: python arrays list

我正在尝试制作一个带有一串数字“一亿九千二百七十三一”的程序,然后把它变成相应的数字。这是我到目前为止的代码:

def string_to_num(text):
    text = text.lower()
    words = text.split()
    numbers = []
    output1 = []
    output2 = []
    output3 = []
    output4 = []
    hold = 1
    l = 1
    for current_word in words:
        number  = word_to_number(current_word)
        numbers.append(number)
    for i in range(len(numbers)):
        current_num = numbers[i]
        if i == len(numbers)-1:
            output1.append(current_num)
            continue
        else:
            previous_num = numbers[i-1]
            if current_num > 999:
                output1.append(current_num)
                continue
            else:
                if previous_num < current_num:
                    output1.append(current_num * previous_num)
                    output1.pop(i-l)
                    l += 1
                    continue
                else:
                    output1.append(current_num)
                    continue
    for i in range(1, len(output1[:])):
        current_num = output1[i]
        previous_num = output1[i-1]
        if current_num > 999:
            output2.append(current_num)
            continue
        else:
            if output1[i-1] > current_num and previous_num < 1000:
                output2.append(current_num + previous_num)
                continue
            else:
                output2.append(current_num)

print('output2', output2)
string_to_num('One hundred ninety two thousand seven hundred thirty one')

它起作用的方式是,在开始时,函数接受数字并将其放入另一个函数中,我将'word_to_number()'转换为相应的数字。我将所有数字值放入一个循环中,得到以下结果:

[1,100,90,2,1000,7,100,30,1]

程序的下一部分将确保添加数百个乘以正确的因子。它采用前面的列表并将其转换为如下所示的列表:

[100,90,2,1000,700,20,1]

请注意,100和700现已合并。

我遇到问题的部分是将数字加在一起并将它们添加到新列表output2中。上面的当前代码产生以下列表:

[190,92,1000,700,730,31]

什么时候看起来像这样:

[192,1000,731]

关于如何使其正常工作的任何想法?我已经尝试将数字加在一起,然后使用.pop从新列表中删除原始数字,但我得到错误'索引不在范围内'。非常感谢任何帮助!

0 个答案:

没有答案