2014-01-21 3 views
-1

Я пытаюсь запустить python для локального запуска программ. У меня есть программа, которая работает в режиме онлайн:Python не работает локально

import random 

def playgame(): 
    s = random.randint(15,99) 
    POSS = range(1,7) 
    if not s % 7: 
     print("I only play when I'm certain of winning, try again!") 
     return 
    while s > 0: 
     choice = 0 
     while choice not in POSS: 
      choice = int(input("Select a number between 1 and 6: ")) 
     s -= choice 
     print("You subtracted {}, leaving {}".format(choice,s)) 
     if not s % 7: 
      comp_choice = 1 
     else: 
      comp_choice = s % 7 
     s -= comp_choice 
     print("I subtracted {}, leaving {}".format(comp_choice,s)) 
    print("I win!") 

playgame() 

Но это не будет работать на моей машине. Я установил питон 3.3.3 и я в GUI Python, и я просто вставить его в и я получаю SyntaxError: Несколько заявлений нашли при составлении заявления ...

Полная ошибка:

>>> import random 

def playgame(): 
    s = random.randint(15,99) 
    POSS = range(1,7) 
    if not s % 7: 
     print("I only play when I'm certain of winning, try again!") 
     return 
    while s > 0: 
     choice = 0 
     while choice not in POSS: 
      choice = int(input("Select a number between 1 and 6: ")) 
     s -= choice 
     print("You subtracted {}, leaving {}".format(choice,s)) 
     if not s % 7: 
      comp_choice = 1 
     else: 
      comp_choice = s % 7 
     s -= comp_choice 
     print("I subtracted {}, leaving {}".format(comp_choice,s)) 
    print("I win!") 

playgame() 
SyntaxError: multiple statements found while compiling a single statement 
>>> 
+0

Просьба показать полную информацию о трассе. (и что такое «Python GUI» здесь?) – geoffspear

+0

Каков полный текст сообщения об ошибке? Вы пытались сохранить файл в текстовом редакторе и запустить его из командной строки? – MattDMo

+0

Графический интерфейс pythin - это то, что следовало с загруженным мной питоном. Я совершенно не знаком с python ... Я загрузил его отсюда: http://www.python.org/download/releases/3.3.3/ Я не знаю, как запустить его из моего CMD, но он не будет запускаться с консоли python. – user3200098

ответ

4

Вы не можете всегда вставляйте многострочный оператор в интерактивный интерпретатор: используете ли вы интерпретатор командной строки, IDLE GUI или некоторую стороннюю среду IDE.

Отчасти причина в том, что интерактивный интерпретатор пытается помочь вам с отступом, который отлично работает при вводе текста, но когда вы вставляете уже отложенный код, он просто разбивает отступ. Это не всегда вызывают проблемы, но иногда это делает, и обучение, когда оно происходит, и не делает этого действительно не стоит усилий.

IDLE добавляет дополнительную проблему: сначала пытается выяснить, какие вещи вы набрали, являются отдельными операторами, поэтому он может передать их компилятору, и если он догадывается, что неправильно ... вы получаете именно сообщение об ошибке, которое вы видели.

Плюс, очень трудно заметить (или отладить) проблемы с отступом в этом режиме. Возможно, вы случайно выбрали дополнительное пространство перед первой линией и сломали все это, или ... кто знает?

IPython имеет специальную команду %cpaste, которая позволяет вставить блок исходного кода и дать понять, как его скомпилировать, что почти всегда делает то, что вы хотите. bpython имеет аналогичную (но более графически ориентированную) функцию. Итак, если вы хотите использовать альтернативную оболочку, вы можете это сделать.

В качестве альтернативы вы можете запускать Python в неинтерактивном режиме. Но в этот момент вам лучше всего просто подключить/перенаправить вход к нему в первую очередь. И даже лучше просто сохранить источник в качестве файла и запустить файл как скрипт.

И действительно, это лучший ответ здесь: сохраните его как файл, запустите файл. Если вы хотите запустить файл и затем перейти в интерактивное приглашение, просто используйте флаг -i.

Или, если вы используете IDLE, это еще проще: создайте новое окно, вставьте источник, сохраните, нажмите F5, и он автоматически запустит этот файл, а затем переключит вас в интерактивный режим.

+0

Я могу вставить многострочный код в интерпретатор в стандартной консоли Windows просто отлично. –

+2

@HenryKeiter, потому что иногда это работает, это не значит, что вы должны это сделать. –

+0

@HenryKeiter: Вы тестируете код, который имеет какие-либо разделители, за которыми следуют отступы? Если нет, добавление дополнительных добавок, очевидно, не будет иметь никакого эффекта. – abarnert

Смежные вопросы