-1

所以,我正在尝试编写代码,允许您 1)输入一个短语 2)输入一个字符串,其中包含您要转换的货币(例如美元欧元;欧元英镑) 3)这两者的汇率。

如果您输入“我有 300 美元,然后我有 400 美元”,(1),“美元欧元”(2)和 4(3),它应该返回“我有 300 美元(~900 欧元)然后我有 400 美元(约 1600 欧元)。

但是,我下面的代码只“转换”了对美元的第一次引用(300 美元,但不是 400 美元),返回 - “我有 300 美元(~900 欧元),然后我有 400 美元”。我不确定我做错了什么。如果您在我的代码中看到错误,请告诉我!提前致谢 :)

phrase = "I had USD 300 and then I had USD 400"
currency = "USD EUR"
ratio = 4

if phrase and currency:
    z = phrase.split()
    for order,word in enumerate(z):
        dictionary = {order : word}
        for i in dictionary.values():
            if i == currency.split()[0]:
                firstplace = z.index(i)
                if currency.split()[1] not in z[int(firstplace) + 2]:
                    convertednumber = (int(float((z[int(firstplace) + 1])))) * int(float(ratio))
                    z.insert(int(firstplace) + 2, f'(~{currency.split()[1]} {convertednumber})')
                    emptyphrase = " "
                    phrase = emptyphrase.join(z)
                else:
                    pass
            else:
                pass

print(phrase)

Ps 我知道这不是一种特别有效的方法,但我只是想测试一下:)

4

1 回答 1

0

这有效,但存在问题。“400”末尾的标点符号。被用作数字的一部分。在这里没关系,但它会造成一个尴尬的句子。但它可以给你基本的想法。

phrase = "I had USD 300 and then I had USD 400."
currency = "USD EUR"
ratio = 4

new = []
handle = False
for word in phrase.split():
    new.append( word )
    if word == currency.split()[0]:
        handle = True
    elif handle:
        convertednumber = int(float((word))) * int(float(ratio))
        new.append( f'(~{currency.split()[1]} {convertednumber})')
        handle = False

print(' '.join(new))
于 2021-03-21T04:28:00.900 回答