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"
失礼しました。
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"
で大丈夫でしょうか。
なぜ?
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
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 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
true --> True
print …+ "\n" --> print …+ "\n",
二人目の回答者様の指摘に気付き、それも踏まえて再度宣言の位置を書き直してやってみたのですが、やはりエラーになってしまいます。エラーメッセージのコピーをし忘れていました。
二度とも
print "#" * int(W) + "\n" ^
というメッセージが取り除けません。
何度も申し訳ありません。わかればお願いします。。。
#はalternate formを表す文字ですね。"X"とか、他の文字に変えたら動くと思いますよ
print r"#"でもイケルかな
true --> True
2014/05/01 00:16:29print …+ "\n" --> print …+ "\n",