def文;コードに文法的な間違いがあります。(質問掲示板

投稿: 128 mini fragile 投稿:2012/06/24 18:45:24(最新:2012/06/24 22:04:24)
4ケタの数を引数に取り、各桁が1かどうかを判定して true,false で返すスクリプトです。
エラーの場所がわからないのですが、どこでしょうか?

  • テスト1
def dir(k)
a = ca()
a[0] = floor(k/1000)
a[1] = floor((k-1000*a[0])/100)
a[2] = floor((k-1000*a[0]-100*a[1])/10)
a[3] = floor((k-1000*a[0]-100*a[1]-10*a[2])
speak("a[0] = ", a[0])# 7行目
i = 0
while i < 4
  if a[i] == 1
  a[i] = true
  else
  a[i] = false
  end
i=i+1
end
return a
end
#syntax error, コードに文法的な間違いがあります。 line(行): 7

  • テスト2
def dir(k)
a = ca()
a[0] = floor(k/1000)
a[1] = floor((k-1000*a[0])/100)
a[2] = floor((k-1000*a[0]-100*a[1])/10)
a[3] = floor((k-1000*a[0]-100*a[1]-10*a[2])

#speak("a[0] = ", a[0])
i = 0 # 9行目
while i < 4
  if a[i] == 1
  a[i] = true
  else
  a[i] = false
  end
i=i+1
end
return a
end
#syntax error, コードに文法的な間違いがあります。 line(行): 9

  • テスト3
def dir(k)
speak("k = ", k)
a = ca()
a[0] = floor(k/1000)
a[1] = floor((k-1000*a[0])/100)
a[2] = floor((k-1000*a[0]-100*a[1])/10)
a[3] = floor((k-1000*a[0]-100*a[1]-10*a[2])

speak("a[0] = ", a[0]) # 9行目
i = 0
while i < 4
  if a[i] == 1
  a[i] = true
  else
  a[i] = false
  end
i=i+1
end
return a
end
#syntax error, コードに文法的な間違いがあります。 line(行): 9

  • テスト4 def前のspeak機能せず
a = ca()
a[0] = 0

speak("a[0] = ", a[0])


def dir(k)
speak("k = ", k)
a = ca()
a[0] = floor(k/1000)
a[1] = floor((k-1000*a[0])/100)
a[2] = floor((k-1000*a[0]-100*a[1])/10)
a[3] = floor((k-1000*a[0]-100*a[1]-10*a[2])

speak("a[0] = ", a[0]) # 15行目
i = 0
while i < 4
  if a[i] == 1
  a[i] = true
  else
  a[i] = false
  end
i=i+1
end
return a
end
#syntax error, コードに文法的な間違いがあります。 line(行): 15

  • テスト5
a = ca()
a[0] = 0

speak("a[0] = ", a[0])

<<QQQ
def dir(k)
speak("k = ", k)
a = ca()
a[0] = floor(k/1000)
a[1] = floor((k-1000*a[0])/100)
a[2] = floor((k-1000*a[0]-100*a[1])/10)
a[3] = floor((k-1000*a[0]-100*a[1]-10*a[2])

speak("a[0] = ", a[0]) # 15行目
i = 0
while i < 4
  if a[i] == 1
  a[i] = true
  else
  a[i] = false
  end
i=i+1
end
return a
end
QQQ
#エラー無し,speak作

コメントする

コメントするには、ログインする必要があります。

コメント一覧

128 mini fragile(投稿日:2012/06/24 21:53, 履歴)
()が閉じられてなかったのですね...
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/06/24 22:04, 履歴)
お気になさらず。

実は初歩ミスだった、ということは
よくあります。
それに早く気付けるかどうかが大切で
これはもう経験しか。
User icon mini 退会したユーザー(投稿日:2012/06/24 19:05, 履歴)
左括弧と右括弧の数がつりあっていないと思います。
文法エラーの行はあんまりアテにしないほうがいいかも・・・。
#誤
a[3] = floor((k-1000*a[0]-100*a[1]-10*a[2])

#正(意図している動作はしないかも)
a[3] = floor(k-1000*a[0]-100*a[1]-10*a[2])
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/06/24 19:44, 履歴)
エラーが発生した行の
前後をチェックする、というのが
大切なときがあります。

takumi2310さんの通り、
エラーの発生している行のひとつ手前で
括弧の数が正確でないため
実際の問題の原因となっている次の行番号が
エラーとして表示されています。