Python转换器 - 我被卡住了

时间:2015-09-29 14:15:38

标签: python converter

我正在制作货币转换器。转换器需要一个最小范围和最大范围,如果当前值高于或低于这些范围,转换器将要求您更改范围以转换货币。例如,如果用户在最小范围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))

2 个答案:

答案 0 :(得分:2)

您应该退回所有必需的项目(我猜min_rangemax_rangeanswer,因为它们是您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