匿名質問者

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"

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/05/01 22:12:46
匿名質問者

質問者から

匿名質問者2014/05/01 12:00:42

失礼しました。

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"

で大丈夫でしょうか。

ベストアンサー

匿名回答2号 No.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",
 

2014/05/01 00:16:29

その他の回答2件)

匿名回答1号 No.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号 No.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",
 

2014/05/01 00:16:29
匿名質問者

質問者から

匿名質問者2014/05/01 12:00:43

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

二度とも

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

というメッセージが取り除けません。

何度も申し訳ありません。わかればお願いします。。。

匿名回答1号 No.3

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

匿名回答1号

print r"#"でもイケルかな

2014/05/01 10:12:00
  • 匿名回答1号
    匿名回答1号 2014/04/30 21:51:59
    あぁ、タブが消えてるw
    >|
    |<
    を半角にしたものでコードをくくって欲しかったww
  • 匿名回答3号
    匿名回答3号 2014/05/01 15:11:22
    2号のコードでエラーなく動いたけどねえ……?
  • 匿名質問者
    匿名質問者 2014/05/01 22:12:08
    みなさん、ご親切にありがとうございます。
    2号さんのコードをそのままうつしてやってみたのですが、それでも同じエラーがでてしまいました。あと#をXに変えてみたりも。
    それ以外の原因も含め、確認しなおしてみようと思います。
    一度引き取らせて頂いて、頭を冷やしてからもう一度チェックしてみようと思います。
    とりあえず保留にして、先へ進んでみようと思います。
    ありがとうございました。
  • 匿名回答2号
    匿名回答2号 2014/05/02 06:34:50
     もしかして、Pythonのバージョン2と3系の違いかな。こちらは、2.7.2。

この質問への反応(ブックマークコメント)

トラックバック

  • 質問のAOJの問題をPythonで解いてみた。  質問のAOJの問題をPythonで解いてみました。(^_^;  下記URLを参考にして入力部分をちょっと工夫してみました。(^_^; ※参考URL ●Pythonでプログラミング
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません