2016-11-01 1 views
0

Bevor ich diese Frage schrieb, suchte ich im Forum nach etwas ähnlichem, fand aber keins. Also hier ist meine Version des Ratespiels. Ich möchte, dass der Benutzer eine Zahl von 0 bis 10 erraten kann, die der Computer "gedacht" hat. Aber ich möchte den Unterschied der Zahlen berechnen und zeigen, ob der Benutzer in der Nähe ist oder nicht die richtige Zahl herauszufinden. Mein Code ist wie folgt:Ein anderes Ratespiel in Python, mit einem kleinen Unterschied

import math 
import random 

intnum = random.randrange(0,11) 
print(intnum) 

print ("The computer generated a random number from 0 to 10! Can you guess it?") 
guess = 0 
while guess != intnum: 
    guess = int(input ("Pick a number!!: ")) 
    num = abs(guess-intnum) 
    print (num) 
    if (num==0): 
     print ("Congrats! The answer is %s" % (guess)) 
     break 
    elif (num>0 or num<=2): 
     print ("You are less than 2 away. Keep going!") 
    elif (num>2 or num<=5): 
     print ("You are more than 2 away. Try again!") 
    elif (num>5): 
     print ("You are more than 5 away!! Try again.") 

ich die Computer-Nummer und den Unterschied zu drucken, um meine Fehler leicht zu finden. Es gibt einen logischen Fehler, den ich nicht lösen kann. Wenn der Computer eine Nummer 9 generiert, und ich denke, eine Nummer 1, ist der Unterschied 9-1 = 8. Aber das Programm, druckt "Sie sind weniger als 2 weg", was falsch ist. Was mache ich falsch? Ich möchte das in einer größeren Version mit mehr Zahlen verwenden, aber für Anfänger habe ich es ein wenig verkleinert, um die richtige Logik und Syntax zu finden.

+3

'num Um dies zu tun, müssen Sie sicherstellen, dass die Zahl größer ist, dass die untere und gebunden niedriger als die obere Schranke

Sie müssen die or-and ändern> 0 oder num < = 2' ergibt True, wenn Num acht ist, weil acht größer als Null ist. – Kevin

+2

Versuchen Sie 'und' eher als 'oder' – doctorlove

+0

arztlove Ich versuchte mit und anstelle von oder, es hat nicht funktioniert. Wie sich herausstellte, musste ich nur eine Zahl <= 2 schreiben, da ich bereits die obige Bedingung habe. –

Antwort

1

Die richtige Anweisung lautet:

elif (num<=2): 
    print ("You are less than 2 away. Keep going!") 
2

Dieser Block Bedürfnisse von

Umschreiben
if (num==0): 
    print ("Congrats! The answer is %s" % (guess)) 
    break 
elif (num>0 or num<=2): 
    print ("You are less than 2 away. Keep going!") 
elif (num>2 or num<=5): 
    print ("You are more than 2 away. Try again!") 
elif (num>5): 
    print ("You are more than 5 away!! Try again.") 

zu

if (num==0): 
    print ("Congrats! The answer is %s" % (guess)) 
    break 
elif (num>0 and num<=2): 
    print ("You are less than 2 away. Keep going!") 
elif (num>2 and num<=5): 
    print ("You are more than 2 away. Try again!") 
elif (num>5): 
    print ("You are more than 5 away!! Try again.") 

Ich verstehe, was Sie versuchen, mit dem "oder" zu tun s in Ihrem ursprünglichen Code-Block, aber der Computer wird anders denken, und in diesem Fall ist "und" Ihr Freund.

+0

In der zweiten Bedingung ist 'num' implizit größer als 0, und ebenso in der dritten' num' ist implizit größer als 2. Die vierte und letzte Bedingung kann durch nur 'else' ersetzt werden, aber du hast recht zu zeigen dass der logische Fehler in der Verwendung von "oder" statt "und" liegt. –

-1

Die Bedingung, die Sie verwenden, tut nicht, was Sie wollen.

Sie müssen überprüfen, ob eine Zahl in einem Intervall liegt. in Ihren Bedingungen

Verwandte Themen