2016-04-27 3 views
2

Это игра, которую я сейчас пытаюсь сделать. Я кодирую эту игру в python 3.4. он не запускается.Угадайте номер игры, ошибка.

# this is a guess the number game! 

import random  
guesses = 0  
name = input("what is your name?")  
number = random.randint(1, 20)  
print = name + ", I am thinking of a number between 1 and 20..."  
while guesses << 7: 
    guess = int(raw_input("Take a guess."))  
    guesses = guesses + 1  
    if guess < number: 
     print ("your guess is too low!")  
    if guess > number: 
     print ("your guess is too high!")  
    if guess == number: 
     break 
if guess == number: 
    guesses = str(guesses) 
    print ("Good job," + name + "you guessed my number in" +guesses +"guesses!") 
if guess != number: 
    number = str(number) 
    print ("Nah dude, better luck next time!") 
+0

В каком именно смысле оно не работает? Включите ожидаемый вывод, фактический вывод, сообщения об ошибках и т. Д. – TigerhawkT3

+0

Хотя я вижу несколько синтаксических ошибок и опечаток, таких как отступы в верхней части, 'print = ...', 'guess << 7' и т. Д. – TigerhawkT3

ответ

3

Я думаю, что вы имели в виду использовать < вместо <<. << и >> - операторы сдвига битов влево и вправо соответственно.

Ваши последние два, если условия также находятся вне вашей петли, и не имеют большого смысла. Вы уже проверяете if guess == number один раз и ломаете, если это условие выполнено. if guess != number, вы уже проверили это, используя < и > соответственно.

print = ...? print синтаксис print(some_stuff, ...). Отступы также выходят вверху, но предполагая, что это просто из-за публикации вашего первого вопроса.

Также, raw_input для python2 это всего лишь input в python3. Вы можете очистить распечатывающие заявления с помощью форматировщиков % или используя .format.

Исправлен код: (Python 3 версии, так как это, Что помечено в вопросе ...)

import random 

name = input("what is your name?") 
number = random.randint(1, 20) 
#print("%s I am thinking of a number between 1 and 20..." % name) 
print(name + " I am thinking of a number between 1 and 20...") 

guesses = 0 
while guesses < 7: 
    guess = int(input("Take a guess.")) 
    guesses += 1 

    if guess < number: 
     print ("your guess is too low!") 

    elif guess > number: 
     print ("your guess is too high!") 

    else: 
     #print("Good job %s you guessed my number in %d guesses" % (name, guesses)) 
     print ("Good job, " + name + " you guessed my number in " + str(guesses) + " guesses!") 
     break 
+0

, так что с вашим более красивым кодом я все равно получаю сообщение об ошибке. эта ошибка говорит: syntaxerror: 'break' out loop – RedbeardShanks

+1

Вы пытались скопировать и вставить? 'break' определенно находится внутри цикла здесь, это может быть копия/вставка или, возможно, код корректировки ошибок редактирования. Поскольку ошибка говорит, что 'break' должен находиться внутри цикла и в этом случае внутри' else' разбивать цикл while в правильной точке. – Pythonista

+1

не хотел копировать и вставлять. Мне нужно было исправить то, что было неправильно, чтобы визуально увидеть, что было не так. в любом случае, его фиксированный и отлично работающий. большое спасибо! – RedbeardShanks

0

Есть много ошибок в вашей программе. Всегда включайте ошибки, которые вы получаете в своем вопросе. Учитывая синтаксическую ошибку, которую вы делаете, сначала получите свои руки грязными на интерпретаторе python, выполнив простые команды. Ниже следует помочь. Ниже в Python 2, для Python 3 заменить, raw_input() с input и print 'something' с print ('something')

первое решение:

import random 

name = raw_input("Hello! What is your name?\n") 
print "Well, " + name + ", I am thinking of a number between 1 and 20" 
no = random.randint(1,20) 
guess = int(raw_input("Take a guess\n")) 
count =1 

while guess != no:  
    if guess < no: 
     print "Your guess is too low."     
    if guess > no: 
     print "Your guess is too high" 
    count +=1 
    guess = int(raw_input("Take a guess\n")) 

print "Good job, %s! You guessed my number in %d guesses!" % (name ,count) 

второе решение:

import random 

def check(): 
    global count # good example of use of global 
    guess = int(raw_input("Take a guess\n")) 
    if guess == no: 
     print "Good job, %s! You guessed my number in %d guesses!" %(name,count) 
    elif guess < no: 
     print "Your guess is too low." 
     count +=1   
     check()   
    else: 
     print "Your guess is too high" 
     count +=1 
     check() 

name = raw_input("Hello! What is your name?\n") 
print "Well, " + name + ", I am thinking of a number between 1 and 20" 
no = random.randint(1,20) 
global count 
count =1 
check() 
+0

с использованием нескольких 'if''s здесь избыточно. Он будет проверять каждое из этих условий, а не останавливаться на одном из них. – Pythonista

+1

Да :) Позвольте мне исправить это. – garg10may

0

Ваш код будет хорошо , небольшие изменения могут заставить его работать!

import random  
guesses = 0  
name = raw_input("what is your name?") # use input() is using Python 3 
number = random.randint(1, 20)  
print name + ", I am thinking of a number between 1 and 20..."  
while guesses < 7: 
    guess = int(raw_input("Take a guess."))  
    guesses = guesses + 1  
    if guess < number: 
     print ("your guess is too low!")  
    if guess > number: 
     print ("your guess is too high!")  
    if guess == number: 
     break 
if guesses == number: 
    print ("Good job,", name, "you guessed my number in", guesses, "guesses!") 
if guesses != number: 
    number = str(number) 
    print ("Nah dude, better luck next time!", "The number is", number) 
Смежные вопросы