python - 我的代码包含 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....
.
问题是我为什么会得到这个结果?你能帮我解决这个问题吗?
我应该注意到我很高兴我得到了这个结果,但是因为我编写了这段代码,所以我不明白它为什么以及它是如何工作的,这让我思考了很多,但我还没有得到明确的答案。
解决方案
我应该感谢KarlKnechtel和GreenCloakGuy帮助我,向我介绍文档并提示我。
我的代码在做什么,答案是:
如果第一个索引是.
,则查找整个字符串并将它们全部删除。
所以这就是它的工作原理,我不知道为什么,我阅读了文档来理解,这两个朋友也帮助了我。