こんにちは。
今日、リカバリしたばかりのPCに、python3.1をインストールしコマンドラインモードからテスト代わりに

「print "Hello world!"」

と打って実行してみました。
しかし、「SyntaxError: invalid syntax」とエラーが出ます。
「print "Hello world!"」の最後の「"」でエラーが発生していると出たのですが、どういうことなのでしょうか。

pythonは始めたばかりで、参考書で最初に書いてあったのを実行してみたのですが…。しょっぱなからこれだと残念です。私の環境が悪いのかも知れませんが。

プログラミング経験はC、C++で中規模のアプリケーション、2Dゲームを作成した程度です。

お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

現時点でのPythonの書籍はおそらくver2.x用だと思いますが、Python3からいくつか文法が変更されています。


http://docs.python.org/3.0/whatsnew/3.0.html

printは、以前は構文でしたが、関数になったので、カッコが必須です。
print("Hello world!")
    • good
    • 9
この回答へのお礼

教えて頂いた方法で無事成功しました。
逆に関数になると、Cと同じで理解しやすいので良かったです。
URLも示していただき、本当に有難うございました。

お礼日時:2009/05/19 17:19

まず、コマンドプロンプトからpython.exeを起動してみる。

これで対話形式で実行できる。その場で、「print "OK"」とか書いてEnterすれば、その場にOKと表示されるはず。これができれば、Python自体は壊れてない。スクリプトファイルに問題があることになる。理由はいろいろ考えられるが。

・全角文字がどこかに混じってる。
・printのpの前にスペースなどが入っている。
・"Hello world!"の後にスペースなどが入っている。
・そもそもテキストファイルでない。

とか。

この回答への補足

返信有難うございます。
示してくださった方法はすべて試したうえで質問させて頂きました。

補足日時:2009/05/19 17:20
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qpython スクリプトファイルの実行

プログラム初心者です。
pythonを始めて間もないです。
環境はwindows XPでpython2.6を使っています.
IDLEエディタでprint "hello" と記入し、test.pyを作成しました。
保存先はC:\Python26になります。環境変数もコマンドラインでpythonと入力すれば起動してくれるように設定しています。
そこで、コマンドラインにpython test.pyと入力すると、File"<stdin>",line 1
python test.py
SyntaxError: invalid syntax
と返ってきます。
色々調べてみたのですが解決できず質問させていただきました。
どうかよろしくお願いします

Aベストアンサー

ああ、やっぱり。
python
とだけやると、対話モードで起動してしまいます。
スクリプトを実行したいのなら、
コマンドプロンプトのコマンドラインで、
python test.py
としてみてください。

QPythonでテキストを行数指定して読み込む

Pythonの勉強を始めて4ヶ月ほどの者です。
今、コマンドライン(Winでのコマンドプロンプト、Linux系での端末など)からPythonでメールアドレスが書いてあるテキストを読み込み、そのアドレスにメールを送るプログラムを考えてます。
具体的には、address.txtというファイルに、
aaa.example@test.ne.jp
bbb.example@test.ne.jp
ccc.example@test.ne.jp
という風に記述してあるとします。(一行に一アドレスです。)
プログラムの部分(最初からではなく途中です)は、
print "Select the E-mail Address below"
a = open("Address.txt")
for i in a:
print i
to = raw_input(":")
とまできたんですが、自分としては読み込んだ「Address.txt」に書かれてるアドレスを行数ごとに指定して読み込みたいんです。つまりraw_input(":")に
1を入れたら1行目を指定→「aaa.example@test.ne.jp」
2を入れたら2行目を指定→「bbb.example@test.ne.jp」
3を入れたら3行目を指定→「ccc.example@test.ne.jp」
が選択されるようにし、変数toに代入されるようにしてSMTPモジュールのto_addrに引き渡すようにしたいのです。

ですが行数を指定してテキストを読み込むメゾットやオブジェクトが入ってるモジュールや関数はありますか?

Pythonは2.6.4と3.0.1の両方のバージョンが入ってます。できれば両方で動かしたいので3.0.1で仕様の変更があったら教えてもらえるとありがたいです。
OSはメインがWinXPSP3、サブ(テスト用、VMWare使用)にUbuntu9.04(Pythonは2.6系だったと思います。)

Pythonの勉強を始めて4ヶ月ほどの者です。
今、コマンドライン(Winでのコマンドプロンプト、Linux系での端末など)からPythonでメールアドレスが書いてあるテキストを読み込み、そのアドレスにメールを送るプログラムを考えてます。
具体的には、address.txtというファイルに、
aaa.example@test.ne.jp
bbb.example@test.ne.jp
ccc.example@test.ne.jp
という風に記述してあるとします。(一行に一アドレスです。)
プログラムの部分(最初からではなく途中です)は、
print "Select the E-mail Address below"...続きを読む

Aベストアンサー

以下、字下げを表現するのに全角空白を使っています。コピーしたら置き換えましょう。
a = open("Address.txt")
lines = []
for line in a:
 print line
 lines.append(line)
to = raw_input(":")
addr = lines[to+1]
これでaddrに指定行のアドレスが入るはずです。

QPythonで元CSVファイルの一部列を抜き出す

Python初心者です。どうぞよろしくお願い致します。

インターネットを色々検索していますが苦戦していますので投稿させてください。

下記のような元CSVファイルから、不要な列だったり、空白の列をカットして
必要な列だけのCSVとして新たなファイルとして出力したいと思っています。

元CSVファイル (上からタイトル行とサンプル2行抜き出し)※Excelでの画像添付しています

ID,URI,body,text_author,text_flg,text_source,text_updatetime,text_url,DATE,DATE_2
1, csv://10.182.XXX, "comment A, comment B, comment C", Mr.A, , SourceA, , http://www.yahoo.co.jp, 1.37667E+12, 20130817
2, csv://10.183.XXX, "comment D, comment E, comment F", Mr.B, , SourceB, , http://www.goo.co.jp, 1.37667E+12, 20130817

(期待する出力結果)
body,text_author,text_source,text_url,DATE_2
"comment A, comment B, comment C", Mr.A, SourceA, http://www.yahoo.co.jp, 20130817
"comment D, comment E, comment F", Mr.B, SourceB, http://www.goo.co.jp, 20130817

つまり、元のファイルの列の(一番左がRow(0)として)Row(2),Row(3), Row(5), Row(7), Row(9)だけを
各行抜き出して新たなCSVファイルとして出力したいと思っています。
ちなみに行数は1000の場合も10000の場合もあります。

最初は、gawkで処理しようと思っていましたが、抜き出したいうちのひとつRow(2)には、
不定期で複数のカンマが含まれているため、gawkでは正しく列分類ができず、
Pythonを学習がてらうまくできないかと思っています。

実は締め切りが近いので結構あせっているのですが、(自分のセンスのなさにヘキヘキ・・)
どなたかこのようにCSVを処理できるPythonのやり方を教えて頂けないものでしょうか。

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

Python初心者です。どうぞよろしくお願い致します。

インターネットを色々検索していますが苦戦していますので投稿させてください。

下記のような元CSVファイルから、不要な列だったり、空白の列をカットして
必要な列だけのCSVとして新たなファイルとして出力したいと思っています。

元CSVファイル (上からタイトル行とサンプル2行抜き出し)※Excelでの画像添付しています

ID,URI,body,text_author,text_flg,text_source,text_updatetime,text_url,DATE,DATE_2
1, csv://10.182.XXX, "comment A, comment B,...続きを読む

Aベストアンサー

#1補足について。

出力されたCSVを、テキストエディタで開いてください。
# Excelで開くと、中身が解釈されて、どんな状態か判断しずらくなります。
インタプリタでの出力と同じ内容になっているはずです。

インタプリタでの結果は
comment A, comment B, comment C Mr.A SourceA http://www.yahoo.co.jp 20130817
ですから、CSVとして解釈すると
comment A
comment B
comment C Mr.A SourceA http://www.yahoo.co.jp 20130817
の3項目となります。

出力させたいのは、
"comment A, comment B, comment C",Mr.A,SourceA,http://www.yahoo.co.jp,20130817
というのでは?

CSVで "~" と"でくくってあったら、その中身が項目の本体です。ですから、"を取った状態で取り込むのが普通です。
その状態が row[2]です。
逆に、CSVに出力するなら、 ""でくくらないと、項目内の文字としてのカンマではなく、項目区切りのカンマだと解釈されてしまいます。
ですから、"で括って出力するようにします。例えば、 '"'+row[2]+'"' とか。

printに,で複数の項目を指定すると、それぞれの間をスペースで区切って出力されます。
CSVとしてカンマ区切りにするなら、次の方法のいずれかを使います。
・文字列のjoinメソッドを使う(csvモジュールのマニュアルのサンプロコードにある例)
・数が固定なら、%で書式指定する
例) print '"%s",%s,%s,%s,%s' %(row[2], row[3], row[5], row[7], row[9])
・print関数のsep=で指定する。(Python3,あるいは2.6以降でprint関数有効時)
・csv.writerを使う

#1補足について。

出力されたCSVを、テキストエディタで開いてください。
# Excelで開くと、中身が解釈されて、どんな状態か判断しずらくなります。
インタプリタでの出力と同じ内容になっているはずです。

インタプリタでの結果は
comment A, comment B, comment C Mr.A SourceA http://www.yahoo.co.jp 20130817
ですから、CSVとして解釈すると
comment A
comment B
comment C Mr.A SourceA http://www.yahoo.co.jp 20130817
の3項目となります。

出力させたいのは、
"comment A, comment B, comment C",Mr.A...続きを読む

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。

Qエクセル STDEVとSTDEVPの違い

エクセルの統計関数で標準偏差を求める時、STDEVとSTDEVPがあります。両者の違いが良くわかりません。
宜しかったら、恐縮ですが、以下の具体例で、『噛み砕いて』教えて下さい。
(例)
セルA1~A13に1~13の数字を入力、平均値=7、STDEVでは3.89444、STDEVPでは3.741657となります。
また、平均値7と各数字の差を取り、それを2乗し、総和を取る(182)、これをデータの個数13で割る(14)、この平方根を取ると3.741657となります。
では、STDEVとSTDEVPの違いは何なのでしょうか?統計のことは疎く、お手数ですが、サルにもわかるようご教授頂きたく、お願い致します。

Aベストアンサー

データが母集団そのものからとったか、標本データかで違います。また母集団そのものだったとしても(例えばクラス全員というような)、その背景にさらならる母集団(例えば学年全体)を想定して比較するような時もありますので、その場合は標本となります。
で標本データの時はSTDEVを使って、母集団の時はSTDEVPをつかうことになります。
公式の違いは分母がn-1(STDEV)かn(STDEVP)かの違いしかありません。まぁ感覚的に理解するなら、分母がn-1になるということはそれだけ結果が大きくなるわけで、つまりそれだけのりしろを多くもって推測に当たるというようなことになります。
AとBの違いがあるかないかという推測をする時、通常は標本同士の検証になるわけですので、偏差を余裕をもってわざとちょっと大きめに見るということで、それだけ確証の度合いを上げるというわけです。

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

QMacターミナルで実行中のプログラムを中止するには?

Macのターミナルでプログラムを走らせているとき、
実行中のプログラムを一時停止したり中断・終了させるには
どうしたらいいでしょう?

Unixだと、Control+s とか Control +c とかでできますよね。
Macだと、それではできないみたいなんです。

基本的な質問ですみませんが、どなたか教えていただけないでしょうか。

Aベストアンサー

ごく普通にControl + Cで中断できますよ。

もしかしてControlキーをcommandやcapslockと押し間違えているとかいうことはありませんか?

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。

Q[python] 文字列を変数名として使いたい

すいません教えて下さい。

pythonで以下の変数をセットしています。

aaa = 'hensu_name'

aaaで指定した'hensu_name'に対して値を入れたい場合は
どのように実装すればよいでしょうか?
(aaaに入れたstringを変数名にしたい)

よろしくお願いします。

Aベストアンサー

exec関数を使って文字列をコードとして実行すれば、それっぽいことができるように思います。
あまりいい例を思いつかないですが、以下のような感じでしょうか?

aaa = "hensu_name"
src = aaa + " = 'hello'" #srcの中身は、"hensu_name = 'hello'"

exec(src)
print hensu_name #hello が表示される

src = "print " + aaa #srcの中身は、"print hensu_name"
exec(src) #hello が表示される


ただ、No.1の方がおっしゃっているように、あまりお勧めな方法ではありません。
文字列をコードとして実行してしまうので、少々危険な側面もあります。
悪意のあるコードを含む文字列を実行してしまうとか…。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報