声明和赋值全局变量的语法错误



我正在尝试编程二进制和十进制转换器,但是我在一个变量上挂起了。

def conversion():
global binaryOrDecimal = input('''Which way are you trying to convert?
A: Binary to Decimal
B: Decimal to Binary
''')
conversion()
if binaryOrDecimal == 'a' or 'A':
print('test')
elif binaryOrDecimal == 'b' or 'B':
print('test2')
else:
print('invalid argument, please try again')
conversion()

我得到错误"语句结束预期"one_answers"语句预期,发现Py:EQ",都在第2行。

我自己也是一个初学者,但我不认为你可以给一个变量赋值并在同一行上使用全局关键字。首先你需要定义全局变量:

global binaryOrDecimal

然后赋值给它:

binaryOrDecimal = input('''Which way are you trying to convert?
A: Binary to Decimal
B: Decimal to Binary
''')

所以总的来说,你的功能应该是:

def conversion():
global binaryOrDecimal 
binaryOrDecimal = input('''Which way are you trying to convert?
A: Binary to Decimal
B: Decimal to Binary
''')

好,这里有几件事。

1,这不是如何定义全局变量。确保在之后为全局变量赋值您已将其定义为全局

global foo
foo = "a"

第二,为了检查一个变量是否等于两个或多个值,binaryOrDecimal == 'b' or 'B':将不起作用。您可以使用in来检查元素是否出现在可迭代对象中。

if foo in ["bar1","bar2"]

但是在您的情况下,在您接受输入后,您可以使用lower()来小写用户输入,如果它是大写的。这样,您就不必将输入值与两个值进行比较。

如果我们解决了所有这些问题,你应该得到这样的结果。

def conversion():
global binaryOrDecimal 
binaryOrDecimal = input('''Which way are you trying to convert?
A: Binary to Decimal
B: Decimal to Binary
''').lower()
conversion()
if binaryOrDecimal == 'a':
print('test')
elif binaryOrDecimal == 'b':
print('test2')
else:
print('invalid argument, please try again')
conversion()

我想指出的最后一点是,尽量不要使用全局变量。相反,返回一个值。这样,函数中的所有变量都在局部作用域中,并且不会被其他函数所知道。

def conversion():
binaryOrDecimal = input('''Which way are you trying to convert?
A: Binary to Decimal
B: Decimal to Binary
''').lower()
return binaryOrDecimal
binaryOrDecimal = conversion()
if binaryOrDecimal == 'a':
print('test')
elif binaryOrDecimal == 'b':
print('test2')
else:
print('invalid argument, please try again')
binaryOrDecimal = conversion()

希望这对你有帮助:)

最新更新