3

我已经在这个问题上停留了两个多小时,这是作业,所以请不要给我直接的答案,只是指出我正确的方向。

所以... 这个程序旨在输入“限速”,输入“当前速度”,然后给您一个“速度正常”(如果您低于或等于限速)和“慢下来! " (如果你超速)。当我根据任务要求输入以下数据时:速度限制为 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

首先,请记住,编程最重要的规则之一是避免代码加倍。这意味着在您的程序中使用同一行 3 次几乎不是一个好主意。speed = int(input("Current speed: "))如果该行有错误,修复它可能会使其他两个地方的错误保持不变。

如果您遵循该规则,您可能会发现您只需要一个应该终止的循环(White space)(因此该检查应该在条件中,而不是false)。在那个循环中,你应该检查if的程序应该给出哪个响应。

最后,我强烈反对有一个名为false. 如果speed大于limit,您的变量false将保持该值True(这非常奇怪且令人惊讶)。任何其他程序员可能会误解这一点。

永远不要忘记,编写程序也是与下一个必须维护代码的程序员交流。

于 2013-08-26T10:04:15.157 回答
2

试图给出一个指针 -

你的循环在错误的地方。仔细考虑您想要重复哪些代码,以及每个循环应该执行一次哪些代码。

尝试看看如果您的第一个输入超过速度限制会发生什么:)

于 2013-08-26T10:00:24.707 回答
0

您的设计方式错误,您必须进行无限循环

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

我希望这会对你有所帮助

于 2013-08-26T10:02:28.383 回答
0

您可以使用固定限制或用户输入限制设置循环返回的频率。

int(input("...") 将位于循环内部但在 True/False 检查之外。

由于只有 2 个可能的答案(“速度正常”和“减速”),请查看如何验证此布尔值。

剧透。

于 2013-08-26T10:45:17.527 回答