人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

pythonについて質問させて頂きます。
AOJの問題の問題を解いているのですが、回答を出す前に自分の実行(コンパイル)してみたのですが、うまくできません。syntaxerrorがでます。どこがまずいか指摘して頂けますでしょうか。問題はこれhttp://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_5_Bで、
コードはこれです。
while true:
if W==0 and H==0 :
break
H,W = map(int,raw_input().split())
print "#" * W + "\n"
/*実行すると、この直前の行でerrorになる。なぜ。。。*/
print ("#"+ "."*(W-2)+ "#"+"\n")*(H-2)
print "#"*W + "\n"

●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

質問者から

失礼しました。

while true:
if W==0 and H==0 :
 break
H,W = map(int,raw_input().split())
print "#" * W + "\n"
/*実行すると、この直前の行でerrorになる。なぜ。。。*/
print ("#"+ "."*(W-2)+ "#"+"\n")*(H-2)
print "#"*W + "\n"

で大丈夫でしょうか。


1 ● 匿名回答1号
while true:
if W==0 and H==0 :
break
H,W = map(int,raw_input().split())
print "#" * W + "\n"
print ("#"+ "."*(W-2)+ "#"+"\n")*(H-2)
print "#"*W + "\n" 

と推測して、念のため、

print "#" * int(W) + "\n"

でもだめ?
あと、IF文の位置がraw_inputの前だと、最後の0入力でprint文が実行されるよ。エラーになると思うよ。
っていうか、不勉強にして、文字列のかけ算を知らなかったw


2 ● 匿名回答2号
ベストアンサー

なぜ?

 if W==0 and H==0 :
NameError: name 'W' is not defined

# coding: UTF-8
while True:
 H,W = map(int,raw_input().split())
 if W==0 and H==0 :
 break
 if not (3<=H and H<=300):
 continue
 if not (1<=W and W<=100):
 continue
 print "#" * W + "\n",
 print ("#"+("."*(W-2)+ "#" if W>=2 else "")+"\n")*(H-2),
 print "#"*W + "\n",
 print

匿名回答2号さんのコメント
true --> True print …+ "\n" --> print …+ "\n",

質問者から

二人目の回答者様の指摘に気付き、それも踏まえて再度宣言の位置を書き直してやってみたのですが、やはりエラーになってしまいます。エラーメッセージのコピーをし忘れていました。
二度とも

print "#" * int(W) + "\n"
 ^

というメッセージが取り除けません。
何度も申し訳ありません。わかればお願いします。。。


3 ● 匿名回答1号

#はalternate formを表す文字ですね。"X"とか、他の文字に変えたら動くと思いますよ


匿名回答1号さんのコメント
print r"#"でもイケルかな
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ