Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python转换器-我卡住了_Python_Converter - Fatal编程技术网

Python转换器-我卡住了

Python转换器-我卡住了,python,converter,Python,Converter,我在做一个货币转换器。转换器需要一个最小范围和最大范围,如果currecy的值高于或低于这些范围,转换器将要求您更改范围以能够转换货币。例如,如果用户将范围设置为最小范围3和最大范围7之间,则仅当货币值介于3和7之间时,他才能进行转换 将有几个货币类型的转换器,这就是为什么我使用第二个范围函数和输入文本等变量 大部分似乎都能工作,因为range函数似乎能提取最小范围、最大范围和答案值等。但我找不到方法将其返回到货币转换。我尝试将范围内的值更改为零,然后再尝试为它们、列表、循环和所有内容设置新值。

我在做一个货币转换器。转换器需要一个最小范围和最大范围,如果currecy的值高于或低于这些范围,转换器将要求您更改范围以能够转换货币。例如,如果用户将范围设置为最小范围3和最大范围7之间,则仅当货币值介于3和7之间时,他才能进行转换

将有几个货币类型的转换器,这就是为什么我使用第二个范围函数和输入文本等变量

大部分似乎都能工作,因为range函数似乎能提取最小范围、最大范围和答案值等。但我找不到方法将其返回到货币转换。我尝试将范围内的值更改为零,然后再尝试为它们、列表、循环和所有内容设置新值。尝试在范围内更改货币值后,Currency_convert仍显示相同的货币值。我如何将答案发送回currency_convert?我必须在范围内回答吗

你知道我做错了什么,该怎么做吗

这是脚本的一部分看起来像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))

您应该返回所有必需的项目,我猜是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))

我还建议不要将函数或变量命名为范围,因为这会掩盖内置函数范围。

首先给出一个简单的答案。呼叫应为应答=调整范围最小范围、最大范围、应答、输入文本。正如Sharon Dwilif K所说,调用函数范围是不好的,因为它会影响内置函数。那么函数中的最后一条语句就是return-answer

不过,听起来使用类可能会有所帮助。下面是一个使用类的完整工作示例:

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)

太棒了,它能工作。非常感谢。只有一件事,Return应该是Return小r,否则你会得到错误。1+给你。谢谢你的贡献。