Python 这个代码有逻辑错误吗?

Python 这个代码有逻辑错误吗?,python,python-2.x,Python,Python 2.x,代码很简单,一旦你看到它,你就可以知道它做了什么 n = int(input()) if(n%2!=0): print 'Weird' elif(n%2==0): if(n>=2 & n<=5): print 'Not Weird' elif(n>=6 & n<=20): print 'Weird' elif(n>20): print 'Not Weird' n=int

代码很简单,一旦你看到它,你就可以知道它做了什么

n = int(input())
if(n%2!=0):
    print 'Weird'
elif(n%2==0):
    if(n>=2 & n<=5):
        print 'Not Weird'
    elif(n>=6 & n<=20):
        print 'Weird'
    elif(n>20):
        print 'Not Weird'
n=int(输入())
如果(n%2!=0):
打印“怪异”
elif(n%2==0):
如果(n>=2&n=6&n20):
打印“不奇怪”
它工作正常,但仅在2种情况下显示错误。当输入是
18
时,它会说
不奇怪
,而输出应该是
奇怪的
。当输入为
20
时,也会发生同样的情况。
这可能是一个愚蠢的错误或什么的,但我只是不能把我的手指放在它,我需要有人看看它

这种情况与您认为的情况不同:

>>> n = 18
>>> n >= 2 & n <= 5
True
>>n=18
>>>n>=2&n>>n>=(2&n)>>导入ast

>>>ast.dump(ast.parse('n>=2&n=(2&n)此条件与您认为的情况不同:

>>> n = 18
>>> n >= 2 & n <= 5
True
>>n=18
>>>n>=2&n>>n>=(2&n)>>导入ast

>>>ast.dump(ast.parse('n>=2&n=(2&n))将运算符
&
更改为
,并且
&
是位运算符。

将运算符
&
更改为
,并且
&
是位运算符。

只需稍微修改您的代码即可摆脱
&
。您可以在
if/elif
语句中组合范围

n = int(input())
if(n%2!=0):
    print ('Weird')
elif(n%2==0):
    if(2<=n<=5):
        print ('Not Weird')
    elif(6<=n<=20):
        print ('Weird')
    elif(n>20):
        print ('Not Weird')
n=int(输入())
如果(n%2!=0):
打印(‘怪异’)
elif(n%2==0):

if(2只需稍微修改您的代码,去掉
&
。您可以在
if/elif
语句中组合范围

n = int(input())
if(n%2!=0):
    print ('Weird')
elif(n%2==0):
    if(2<=n<=5):
        print ('Not Weird')
    elif(6<=n<=20):
        print ('Weird')
    elif(n>20):
        print ('Not Weird')
n=int(输入())
如果(n%2!=0):
打印(‘怪异’)
elif(n%2==0):

如果(2)逻辑运算符需要使用
&
是位运算符,具有不同的优先级,这会导致异常结果(逻辑和按位布尔运算符与布尔参数等效,但同样,这一过程让您感到困惑。但您仍应使用逻辑运算符
而不是
)。此外,还应说“一旦看到它,您将能够知道它的作用。”是获得否决票的好方法。你应该始终正确地指定你的问题。不清楚,问题是什么?除了明显错误地使用
&
elif(n%2==0):
应该是
否则:
,考虑到前面的
if
(并不是说它会改变任何东西)。“简单”,但每隔一行是一个分支语句。此外,您不需要在条件周围使用括号-它们仅用于优先级,
如果n%2!=0:
可以。您需要使用
作为逻辑运算符,
&
是一个位运算符,具有不同的优先级,这会导致异常结果(逻辑和按位布尔运算符与布尔参数等效,但同样,这一过程让您感到困惑。但您仍应使用逻辑运算符
而不是
)。此外,还应说“一旦看到它,您将能够知道它的作用。”是获得否决票的好方法。你应该始终正确地指定你的问题。不清楚,问题是什么?除了明显错误地使用
&
elif(n%2==0):
应该是
否则:
,考虑到前面的
if
(并不是说它会改变任何东西)。“简单”,但每隔一行是一条分支语句。此外,条件周围不需要括号-它们仅用于优先级,
如果n%2!=0:
可以。
n = int(input())
if(n%2!=0):
    print ('Weird')
elif(n%2==0):
    if(2<=n<=5):
        print ('Not Weird')
    elif(6<=n<=20):
        print ('Weird')
    elif(n>20):
        print ('Not Weird')