Python 3.4代码帮助 - 我无法做到这一点

时间:2015-02-01 15:24:36

标签: python function python-3.x converter currency

我是python的新手。这是我的代码:

print("Welcome to the Currency Converter")

print("This Currency Converter converts: ")

print(" US [D]ollar")

print(" [E]uro")

print(" British[P]ound Sterling")

print(" Japanese[Y]en")

print()

def input1() :

    a = input("Enter the currency inital {eg. [E] for Euro} you wish to convert from: ")
    if a.lower is not ('e','y','p','d'):
        print("That is not a valid currency inital. Please try again ")
        input1()
input1()

def input2() :

    b = input("Enter the currency inital you wish to convert to: ")
    if b.lower is not ('e','y','p','d'):
        print("That is not a valid currency inital. Please try again")
        input2()
input2()

即使我不想要它,它总是在重复。我的目的是仅在输入eydp时才能使其正常工作,否则它应显示错误消息并重复提问。

3 个答案:

答案 0 :(得分:4)

有几个问题:

您正在读取函数中的输入,但从不返回它。

def fun():
  a = 1

fun()
print(a)  # NameError

您的测试失败,因为您正在将方法(a.lower)与元组进行比较。您必须调用该函数并检查结果是in序列类型:

if a.lower() not in ('e', 'y', 'p', 'd'):
  ...

最后,不需要递归调用input1函数:

def input1() :
  while True:    
    a = input("Enter the currency inital {eg. [E] for Euro} you wish to convert from: ")
    if a.lower() not in ('e','y','p','d'):
      print("That is not a valid currency inital. Please try again ")
    else:
      return a.lower()

然后在" main"脚本的一部分:

from_curr = input1()

(不要使用from作为变量名称,因为它是keyword)。

答案 1 :(得分:0)

  1. a.lower是您需要调用的函数,否则您只能获得函数引用。 a.lower()
  2. 也是如此
  3. if x is not ('e', 'y', 'p', 'd') - is(或is not)运算符检查身份。在左侧,您有用户输入,在右侧,您有一个包含可能字符的4元素元组。这两个人永远不会有相同的身份。您想使用in运算符:

    if a.lower() not in ('e', 'y', 'p', 'd'):
        …
    

答案 2 :(得分:0)

您的代码没有正确调用函数,也没有为转换分配全局变量。此外,您不应该使用is关键字来检查内存中的等效引用,您应该使用in关键字来检查元组中是否存在元素。

print("Welcome to the Currency Converter")

print("This Currency Converter converts: ")

print(" US [D]ollar")

print(" [E]uro")

print(" British[P]ound Sterling")

print(" Japanese[Y]en")

print()

def input1() :

    a = input("Enter the currency inital {eg. [E] for Euro} you wish to convert from: ")
    if a.lower() not in ('e','y','p','d'):
        print("That is not a valid currency inital. Please try again ")
        return input1()
    return a

a = input1()

def input2() :

    b = input("Enter the currency inital you wish to convert to: ")
    if b.lower() not in ('e','y','p','d'):
        print("That is not a valid currency inital. Please try again")
        return input2()
    return b

b = input2()