首页 > 解决方案 > 我的代码包含 if 块和替换功能比我预期的要好,但我不知道为什么

问题描述

我正在编写一个手动货币转换程序,这是我的代码:

import math


def converter():
    while True:
        def convert():
            hint = '1-eur 2-gbp 3-nzd 4-aud 5-pln 6-aed 7-zar 8-cad 9-chf 10-dkk 11-inr 12-brl 13-hkd 14-pen 15-czk' \
                   ' 16-jpy 17-nok 18-sek 19-qar 20-cny'
            currency_hint = ['EUR', 'GBP', 'NZD', 'AUD', 'PLN', 'AED', 'ZAR', 'CAD', 'CHF', 'DKK', 'INR', 'BRL', 'HKD',
                             'PEN', 'CZK', 'JPY', 'NOK', 'SEK', 'QAR', 'CNY']
            currency_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
            domain_extension = input('Enter domain extension: ')
            if domain_extension[0] == '.':
                domain_extension = domain_extension.replace(domain_extension[0], '')
                print(domain_extension)
            '''if domain_extension[-1] == '.':
                domain_extension = domain_extension.replace(domain_extension[-1], '')'''
            currency = int(input(f'What is the currency? {hint}: '))

            try:
                if currency == currency_list[0]:
                    amount = float(input('How much? ')) * 1.17  # euro
                    return f'You chose extension .{domain_extension} with currency {currency_hint[0]} and it is ' \
                           f'{math.ceil(amount)} USD.'
            except IndexError:
                return 'Try Again'
        me = convert()
        print(me)
        break


converter()

我现在得到的是:我输入我的分机....com....号,然后选择数字 1,例如EUR,我将金额设置1为。在这种情况下,我希望返回值You chose extension .com.... with currency EUR and it is 2 USD.,但如果事实上我得到了You chose extension .com with currency EUR and it is 2 USD.,我真的不知道为什么。

我的假设是:

我的while循环遍历domain_extension变量及其第一个位置以.从开头删除字符,直到它没有其他.字符,然后转到try...except块。

我没有得到的是为什么.最后被删除了?我没有写任何代码来替换它们。起初我认为if domain_extension[-1] == '.'block 正在这样做,但是当我评论这部分时,它仍然.从最后删除。

如果我评论if domain_extension[0] == '.'块,我会得到像.....com.....

问题是我为什么会得到这个结果?你能帮我解决这个问题吗?

我应该注意到我很高兴我得到了这个结果,但是因为我编写了这段代码,所以我不明白它为什么以及它是如何工作的,这让我思考了很多,但我还没有得到明确的答案。

标签: pythonif-statementreplacewhile-loop

解决方案


我应该感谢KarlKnechtelGreenCloakGuy帮助我,向我介绍文档并提示我。

我的代码在做什么,答案是:

如果第一个索引是.,则查找整个字符串并将它们全部删除。

所以这就是它的工作原理,我不知道为什么,我阅读了文档来理解,这两个朋友也帮助了我。


推荐阅读