質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

2回答

2481閲覧

超基本的なことPython Commdがエラーになるのはなぜか?

Casablanca_mtg

総合スコア209

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2016/06/30 01:15

編集2016/06/30 03:49

こんにちは!今復習を兼ねてマイナビでpyてょんお復習をしています。そこで教えていただきたい超基本的なことです。

Python Commdを使って簡単なプログラムを書いていると構文エラーがやたらと出てきます

Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>** # -*- coding: utf-8 -*- ... a = 123456789 >>> i = 1 >>> while(2**i < a): ... i+=1 ... print(i) File "<stdin>", line 3 print(i) ^ SyntaxError:** invalid syntax >>>

最初は# -- coding: utf-8 -- を入れていなかったのでこれを入れました。
しかし、IDLEを使ってやればうまくいくのはわかりますが
Python Commdではなぜエラーになるのでしょうか?
ご指導ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Python2系と3系の違いだと思います。
例えばprint文/関数とか


2系でもprint()は使えましたね

対話形式で実行してみました

python

1>>> a=123456789 2>>> i=1 3>>> while(2**i<a): 4... i+=1 5... 6>>> print(i) 727 8>>>

i+=1の後で...を終わらせないと同じエラーが出ます。

対話形式で

python

1>>> while(2**i<a): 2... i+=1 3... print(i)

と書くと

while(条件式): 処理 print()

という1つの構文として認識してしまい、
そんな構文無いのでシンタックスエラーを吐いているのかと。

投稿2016/06/30 04:03

編集2016/06/30 05:00
ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Casablanca_mtg

2016/06/30 04:16

3系でも同じ結果です。同じエラーが出ます。この記述分は外部ファイルにおいて呼び込むファイルだからですかね?通常にPython Commdで記述するとエラーが返りIDLEで実行すると外部ファイルになって読み込まれるためエラーが返りません。どこが構文エラーにあたるのでしょうか?
Casablanca_mtg

2016/06/30 06:05

理解できました。 i+=1の後で...を終わらせないと同じエラーが出ます。 対話形式ではこのようなことにも気を付けなければいけないのですね。 すっきりしました。また一つお勉強させていただきました。ありがとうございました。
guest

0

とりあえず気になった点

  • whileのカッコ内に「2i」とありますが、「i」の間違いでは
  • while()とprint()の後に「**」がありますが、これはコピペミス?
  • i += 1 と print(i)の字下げレベルが異なっているように見えますが、これもコピペミス?

本題とは関係ないのですが、行頭に'>'を書くと引用の意味になるので表示はそれに沿って整形されてしまいます。
また、字下げ情報も失なわれたりするので、プログラムが恐ろしく読みにくくなり、結果として回答が付きにくくなります。
コード部分を選択して入力エリアの上にある「</>」ボタンを押してみてください。
これで該当部分がプログラムとして認識され、元々の見た目に近い形で表示されるようになります。


</>で該当部分をコード指定した場合:

>>> a = 123 >>> i = 1 >>> while(i < a): ... i+=1 ... print(i)** File "<stdin>", line 3 print(i)** ^ SyntaxError: invalid syntax >>>

そのまま貼り付けた場合:

a = 123
i = 1
while(i < a):

... i+=1
... print(i)**
File "<stdin>", line 3
print(i)**
^
SyntaxError: invalid syntax

投稿2016/06/30 03:14

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Casablanca_mtg

2016/06/30 03:37

すみません記述が変になっていました。 正しくは下記のとおりです >>> # -*- coding: utf-8 -*- ... a = 123456789 >>> i = 1 >>> while(2**i < a): ... i += 1 ... print(i) File "<stdin>", line 3 print(i) ^ SyntaxError: invalid syntax >>>
Casablanca_mtg

2016/06/30 03:42

# -*- coding: utf-8 -*- a = 123456789 i = 1 while(2**i < a): i+=1 print(i) これが正しい記述です
Casablanca_mtg

2016/06/30 03:44

これをPython Commdで実行するとエラーが出ます。理由がわかりません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問