3

私はこの問題で 2 時間以上立ち往生しています。これは宿題なので、直接的な回答はしないでください。正しい方向に向けてください。

つまり... このプログラムは、「速度制限」を入力し、「現在の速度」を入力すると、「速度 OK」(速度制限以下の場合) または「減速! " (スピード違反の場合)。タスクの必要に応じて、次のデータを入力すると: 制限速度 50。現在の速度 50、45、55、52、および 50。

答えは読むべきです -

Speed limit: 50
Current speed: 50
Speed OK
Current speed: 45
Speed OK
Current speed: 55
Slow down!
Current speed: 52
Slow down!
Current speed: 50
Speed OK
Current speed:(White space)

代わりに私は得る -

Current speed: 50
Speed OK
Current speed: 45
*Then the program stops.*

私のプログラムの読み取り -

limit = int(input("Speed limit: "))
speed = int(input("Current speed: "))
if speed <= limit:
  print("Speed OK")
  speed = int(input("Current speed: "))
false = speed > limit
while false:
  print("Slow down!")
  speed = int(input("Current speed: "))

誰かが私を正しい方向に向けることができれば、それは素晴らしいことです;)。

乾杯、

ロン

4

4 に答える 4

4

まず、プログラミングの最も重要なルールの 1 つは、コードの重複を避けることです。これは、プログラムで同じ行を 3 回使用することは、ほとんど良い考えではないことを意味します。speed = int(input("Current speed: "))その行にエラーがある場合、それを修正すると、おそらく他の 2 つの場所のエラーはそのまま残ります。

このルールに従えば、 で終了する必要があるループは 1 つだけであることがわかるでしょう(White space)(したがって、このチェックは ではなく条件にある必要がありますfalse)。そして、そのループifで、プログラムがどの応答を返す必要があるかを確認する必要があります。

最後に、という名前の変数を使用することには強くfalse反対します。speedが より大きい場合、limit変数falseは値を保持しますTrue(これは非常に奇妙で驚くべきことです)。他のプログラマーはおそらくこれを誤解するでしょう。

プログラムを書くことは、あなたのコードを保守しなければならない次のプログラマーとコミュニケーションをとることでもあることを決して忘れないでください。

于 2013-08-26T10:04:15.157 に答える
2

ポインタだけを与えようとしています -

あなたのループは間違った場所にあります。繰り返し続けたいコードと、ループごとに 1 回実行するコードを慎重に検討してください。

最初の入力が速度制限を超えた場合に何が起こるかを確認してみてください:)

于 2013-08-26T10:00:24.707 に答える
0

固定制限またはユーザー入力制限を使用して、ループが戻る頻度のカウンターを設定できます。

int(input("...") はループの内側にありますが、True/False チェックの外側にあります。

考えられる答えは 2 つしかないため (「Speed OK」と「Slow down」)、このブール値を検証する方法を調べます。

ネタバレ。

于 2013-08-26T10:45:17.527 に答える
0

あなたのデザインは無限ループをしなければならない間違った方法です

ask speed limit 
run the forever loop (based on a true condition) :
-> ask the speed
-> print message

それがあなたを助けることを願っています

于 2013-08-26T10:02:28.383 に答える