我正在制作货币转换器。转换器需要一个最小范围和最大范围,如果当前值高于或低于这些范围,转换器将要求您更改范围以转换货币。例如,如果用户在最小范围3和最大范围7之间设置范围,则只能在货币值介于3和7之间时进行转换。
会有几种货币的转换器,这就是我使用第二个“范围函数”和“inputtext”等变量的原因。
大部分内容似乎都有效,因为“范围”功能似乎可以获取最小范围,最大范围和答案值等。但是我无法找到将其返回到currency_convert()的方法。在尝试为它们,列表,循环和所有内容设置新值之前,我尝试将范围()中的值更改为零。尝试在范围()中更改后,Currency_convert()仍显示相同的货币值。如何将“回答”发送回currency_convert()?我是否必须在范围()或其他内容中制作“answer2”?
任何想法我做错了什么以及该做什么?
这是脚本的部分看起来像atm:
def range(min_range, max_range, answer, inputtext):
if answer > min_range and answer < max_range:
return
else:
answer = 0
min_range = input("Set a min range for conversion: ")
max_range = input("Set a max range for conversion: ")
answer = input(inputtext)
Return answer (?)
def currency_convert():
min_range = input("min range: ")
max_range = input("max range: ")
inputtext = "How many dollars to convert: "
answer = input(inputtext)
range(min_range, max_range, answer, inputtext)
sek = answer * 3
print("%d is the same as" % (sek))
答案 0 :(得分:2)
您应该退回所有必需的项目(我猜min_range
,max_range
和answer
,因为它们是您range()
函数中已更改的项目,然后在currency_convert()
函数中接受它们。示例 -
def newrange(min_range, max_range, answer, inputtext):
if answer > min_range and answer < max_range:
return min_range, max_range, answer
else:
answer = 0
min_range = input("Set a min range for conversion: ")
max_range = input("Set a max range for conversion: ")
answer = input(inputtext)
return min_range, max_range, answer
def currency_convert():
min_range = input("min range: ")
max_range = input("max range: ")
inputtext = "How many dollars to convert: "
answer = input(inputtext)
min_range, max_range, answer = newrange(min_range, max_range, answer, inputtext)
sek = answer * 3
print("%d is the same as" % (sek))
我还建议不要将您的函数或变量命名为range
,因为这会掩盖内置函数range()
。
答案 1 :(得分:2)
首先是一个简单的答案。通话应为return answer
。正如Sharon Dwilif K所说,调用函数“范围”并不好,因为它会影响内置函数。然后函数中的最后一个语句就是class CurrencyConverter:
"""Convert currency within a certain range."""
RATES = {'USD_SEK': 3,
'USD_INR': 60}
def __init__(self, currency_from, currency_to):
self.currency_from = currency_from
self.currency_to = currency_to
self.min_range = 0
self.max_range = 0
self.amount_from = 0
def ask_range(self):
self.min_range = int(input("Set a min range for conversion: "))
self.max_range = int(input("Set a max range for conversion: "))
def calculate_amount_to(self):
self.ask_amount_from()
self.adjust_range()
rate_key = '%s_%s' % (self.currency_from, self.currency_to)
return self.amount_from * self.RATES[rate_key]
def ask_amount_from(self):
self.amount_from = int(
input("How many %s to convert: " % self.currency_from))
def adjust_range(self):
"""Makes sure the self.amount_from is within the range."""
if not self.min_range <= self.amount_from <= self.max_range:
self.ask_range()
self.ask_amount_from()
if __name__ == "__main__":
converter = CurrencyConverter('USD', 'SEK')
converter.ask_range()
sek = converter.calculate_amount_to()
print("%d is the result in SEK." % sek)
sek = converter.calculate_amount_to()
print("%d is another result in SEK." % sek)
converter = CurrencyConverter('USD', 'INR')
converter.ask_range()
inr = converter.calculate_amount_to()
print("%d is rupees." % sek)
。
然而,听起来像使用课程可能有所帮助。以下是使用类的完整工作示例:
OpenFileDialog