我是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()
即使我不想要它,它总是在重复。我的目的是仅在输入e
,y
,d
或p
时才能使其正常工作,否则它应显示错误消息并重复提问。
答案 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)
a.lower
是您需要调用的函数,否则您只能获得函数引用。 a.lower()
。 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()