2017-09-05 7 views
0

Ich versuche Python & zu lernen, während ich versuche, dieses Quiz auf einer Website zu lösen, bekomme ich einen seltsamen Fehler, der ist, dass die Behauptung für den 2. Parameter versagt, während die If elif Aussage ist richtig & wird die richtige Ausgabe geben (aber es ist einen falschen unerwarteten Ausgang geben)Wenn elif Aussage mit & gibt unerwartete Ausgabe

Der Fehler ist:

"C:\Program Files\Python36\python.exe" C:/Users/.../PycharmProjects/pythonSnakegame/snakeGame.py 
Fizz Buzz 
Traceback (most recent call last): 
Fizz Buzz 
    File "C:/Users/..../PycharmProjects/pythonSnakegame/snakeGame.py", line 28, in <module> 
    assert checkio(6) == "Fizz", "6 is divisible by 3" 
AssertionError: 6 is divisible by 3 

Process finished with exit code 1 

def checkio(number): 
    # Your code here 
    # It's main function. Don't remove this function 
    # It's using for auto-testing and must return a result for check. 
    if number % 3 == 0 & number % 5 == 0: 
     result = "Fizz Buzz" 
    elif number % 3 == 0: 
     result = "Fizz" 
    elif number % 5 == 0: 
     result = "Buzz" 

    # replace this for solution 
    print (result) 
    return result 
    # return str(number) 


# Some hints: 
# Convert a number in the string with str(n) 

# These "asserts" using only for self-checking and not necessary for auto-testing 
if __name__ == '__main__': 
    assert checkio(15) == "Fizz Buzz", "15 is divisible by 3 and 5" 
    assert checkio(6) == "Fizz", "6 is divisible by 3" 
    assert checkio(5) == "Buzz", "5 is divisible by 5" 
    assert checkio(7) == "7", "7 is not divisible by 3 or 5" 
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!") 

Danke für Ihre Hilfe

+4

Der Boolean und Operator ist 'und', nicht '&'. –

+0

https://stackoverflow.com/questions/3845018/boolean-operators-vs-bitwise-operators –

+1

Für die Aufzeichnung, bricht die Anweisung wie folgt ab: '(Anzahl% 3) == (0 & (Anzahl% 5)) == 0'. Also die Teilbarkeit durch 5-Check wird komplett durch die '0 &' in dort entfernt. –

Antwort

5

die & operato r ist für binäre Operationen, sollten Sie stattdessen and (boolean Operator) verwenden.

Ich frage mich immer, warum es nicht

Die & ist das Deaktivieren des Modulbetriebs-Check für 5, so dass im Grunde alle durch 3 teilbar arbeitete, wo True bekommen, diesen Ausgang Test überprüfen:

number = 12 
number % 3 == 0 & number % 5 == 0 
True 
+0

Vielen Dank, es hat funktioniert! Ich fragte mich, warum es nicht funktionierte, danke –

+0

Danke für die Illustration. –