44811


表記の件について以下のコードでエラーが出ます。  
ご教授ください。

【コード】

[code]

    >>> while x>0:
    ...     print("{}".format(x))
    ...     x-=1
    ... print("happy new year")
    
[/code]

【エラー】

[code]

    File "<stdin>", line 4
        print("happy new year!")
            ^
    SyntaxError: invalid syntax
    
[/code]

【実行させたいプログラム】

x>0がTrueに評価される間コードの実行を繰り返し、x-1を続け、x>0がFalseになったらHappy New
Yearを出力するようにしたい。(以下イメージ)

[code]

    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    Happy New Year !
    
[/code]

どうぞよろしくお願いいたします。


CC BY-SA 4.0
2018-06-16T08:14:04.663
44800
2018-06-16T14:08:51.850
2018-06-16T14:08:51.850
3054
28620
question
python python3
whileループの後のprintがSyntaxErrorになる


### 対話モードの都合上、入力できないコードがあります

質問のコードに構文の間違いはありません。これをファイルに保存して実行しても、構文エラーにはなりません。  
ただし、Pythonインタープリタの[対話モード](https://docs.python.org/ja/3.6/tutorial/interpreter.html#interactive-
mode)の場合は入力する端から実行するという都合上、どうしても受け付けられないコードがあります。例えばこの質問のように、ブロック文の直後に空行をはさまずに次の文を入力する、というコードは受け付けられません。

### 対話モードではブロック文の後に空行が必要

対話モードで左側に `...` が出ている時は、文字列やブロック文が前の行から継続している（と判断されている）と思って下さい。  
最後の`print("happy new
year")`は`while`文の一部ではありませんので、左が`...`のうちは入力せず、空行を入れて`>>>`になってから入力します。

[code]

    >>> x = 5
    >>> while x > 0:
    ...     print("{}".format(x))
    ...     x-=1
    ... 
    5
    4
    3
    2
    1
    >>> print("happy new year")
    happy new year
    >>>
    
[/code]

参考（英語の類似質問）: [Python Syntax Errors with Python
Anywhere](https://stackoverflow.com/q/46016327/4368502)


CC BY-SA 4.0
2018-06-16T14:07:16.110
44811
2018-06-16T14:07:16.110
3054
44800
answer