2

わかりましたので、曜日を見つけるプログラムを書いています。プログラムはこのブロックまでスムーズに動作します

D = input()

A = ( (14 - 'month') /12)

Y = ( 'Year' - 'A' )

MonthProblem = ( 'month' + 12 * 'A' - 2 )

week = ( ('D' + 'Y' + 'Y'/4 - 'Y'/100 + 'Y'/400 + 31 * 'MonthProblem'/12) % 7 )

エラーは TypeError: unsupported operand type(s) for -: 'int' and 'str' です

4

4 に答える 4

2

を使用せずに、変数を名前で直接使用します''。の単語は''、変数ではなく文字列を示します。

例えば:

A = 1
print(A,'A')

出力します1, A

あなたの場合、コードは次のように変更する必要があります。

D = input()
A = ( (14 - month) /12)
Y = ( Year - A )
MonthProblem = ( month + 12 * A - 2 )
week = ( (D + Y + Y/4 - Y/100 + Y/400 + 31 * MonthProblem/12) % 7 )

使用した変数を定義した場合。

于 2012-12-19T10:43:58.750 に答える
2

何かを逆コンマで囲むと文字列になります。これ'month'は単語 this をmonth意味し、月という変数の値を意味します。

'sを削除すると、プログラムはその特定のエラーを表示しなくなります。

D = input()

A = ( (14 - month) /12)

Y = ( Year - A )

MonthProblem = ( month + 12 * A - 2 )

week = ( (D + Y + Y/4 - Y/100 + Y/400 + 31 * MonthProblem/12) % 7 )

month以前に etcの値を定義しましたか?

于 2012-12-12T02:49:38.777 に答える
1

このコード サンプルには多くの問題があります。問題を修正する過程で、エラーは最初の 1 つにすぎません。

'month'文字列ではなく、何らかの変数である必要があるようです。実際のエラーはその行で発生しています:

A = ( (14 - 'month') /12)

マジック ナンバー14 から文字列を引いています。あなたは単にそれを行うことはできません. 整数から文字列を減算することはできません。月を一重引用符で囲むと、リテラル文字列になります。AndrewC が言及しているように、月から一重引用符を削除すると変数になりますが、減算などの操作を実行するには値が必要です。

ここで何をしようとしているのかについてのコンテキストを追加していただけると、私たちがあなたを助けやすくなるかもしれません.

于 2012-12-12T02:44:23.303 に答える
0

このタイプのエラーは、次の線に沿った何かによって引き起こされます。

"some string" + anInt - anotherInt

このステートメントの文字列が原因で問題が発生します。コンパイラは、プラス記号を文字列とintを組み合わせたものとして解釈します。ただし、このコンテキストでは、マイナス記号をどう処理するかがわかりません。文字列からintを減算することはできません。

問題は、整数演算を括弧のセットの中に入れることで解決できます。

"some string" + (anInt - anotherInt)

それでも問題が解決しない場合は、正確なコードを確認して、これらの括弧をどこに追加するかを確認できますが、これで十分な場合もあります。これは常に望ましいことです。


編集:問題の一部である場合に備えて上記の投稿を残しますが、コードを再度確認すると、次のコード行が表示されます。

A = ( (14 - 'month') /12)

String14から「月」を引いているところですint。おそらく問題になるでしょう。

于 2012-12-12T02:40:05.317 に答える