2016-09-27 3 views
-1

Я новичок в Python 3, и я не понимаю, почему я получаю тип ошибки (это предположение ряд игра для чисел между 0-100):Python 3: Traceback: TypeError

print("Please think of a number between 0 and 100!") 
low = 0 
high = 100 
check = False 
while True : 
    guess = (low + high)/2 
    print("Enter 'h' to indicate the guess is too high.\n") 
    print("Enter 'l' to indicate the guess is too low.\n") 
    print("Enter 'c' to indicate I guessed correctly.\n") 
    ans = input("") 
    if ans == "h" : 
     low = ans 
    elif ans == "l" : 
     high = ans 
    elif ans =="c" : 
     print("Game over. Your secret number was:{}".format(guess)) 
     break 
    else : 
     print("Sorry, I did not understand your input.") 

здесь ошибка:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 

Спасибо advance.I'd очень ценю вашу помощь, я застрял в этом

+3

Необходимо нанести полный след. Но из вашего кода: когда пользователь вводит что-либо, кроме 'c', он вызывает ошибку, потому что вы назначаете входное значение (' str' object) переменной 'low' или' high', а затем пытаетесь выполнить операцию 'int' , первый раз '+', а затем '/ 2' –

+0

Да, вы меняете« низкий »или« высокий »на строку в первых двух частях условного выражения. Затем, когда цикл while начинается снова, он пытается использовать их как целые числа для вычисления «угадывания» снова. – Jeff

+0

Это не очень игра; игрок не угадывает число так же, как выбирая число, основанное на последовательности 'h' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. – chepner

ответ

0

на линии low = ans вы низко посаженный быть строковое значение, значение строки "h"

Затем во второй раз, когда вы проходите через цикл, вы пытаетесь вычислить (low + high)/2` Вы не можете вычислить («h» + 100)/2, потому что вы не можете добавить строку в целое число. Это «ошибка типа»

Для каждой строки объясните другу (или мягкой игрушке), что делает каждая строка, и почему вы уверены, что каждая строка правильная.

0

Несколько вещей.

  1. Вы, вероятно, следует распечатать догадку, так что пользователь знает, является ли это слишком высокой или слишком низкой
  2. low==ans не имеет никакого смысла. ans будет либо «h», «l», либо «c», если пользователь будет следовать правилам. low и high должны быть числами, чтобы генерировать guess соответствующего

Также логика была неправильной. Ниже приведен код.

print("Please think of a number between 0 and 100!") 
low = 0 
high = 100 
check = False 
while True: 
    guess = (low + high)/2 
    print("My guess is: %i" % guess) 
    ans = input("Enter 'h' if guess it too high, 'l' if too low, or 'c' if correct: ") 
    print(ans) 
    if ans == "h": 
     high = guess 
    elif ans == "l": 
     low = guess 
    elif ans == "c": 
     print("Game over. Your secret number was:{}".format(guess)) 
     break 
    else: 
     print("Sorry, I did not understand your input.")