简单的Python - 编程中的错误

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: "))

如果有人能指引我正确的方向,那就太好了 ;)。
谢谢,
Ron

5
“while false:” 这句话在技术上是正确的,但听起来让我感到不舒服。(虽然我没点踩) - Carsten
1
尝试调试,你会找到出错的地方。 - Johnny Chen
4个回答

4
首先,要记住编程中最重要的规则之一是避免代码重复。这意味着在程序中几乎从不使用相同的speed = int(input("Current speed: "))代码行三次。如果该行存在错误,则修复它可能会使其他两个位置的错误保持不变。
如果您遵循此规则,可能会发现您只需要一个循环,应该以(White space)终止(因此此检查应在条件中而不是false)。在循环内部,您应该使用if检查程序应该给出哪种响应。
最后,我强烈反对使用名为false的变量。如果speed大于limit,则您的变量false将保存值True(这非常奇怪和令人惊讶)。任何其他程序员都可能会误解这一点。
永远不要忘记编写程序也是与下一个必须维护您代码的程序员进行沟通。

1
谢谢你的帮助,我得到了正确的答案,并且比正常课程学到了更多。干杯! - Ron

2

试图给出一个提示 -

你的循环放错了位置。仔细考虑想要重复执行的代码和每个循环应该执行一次的代码。

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


0

你的设计有问题,你需要做一个无限循环。

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

我希望这能对你有所帮助。


0

你可以设置计数器来控制循环返回的次数,可以是固定的次数,也可以是用户输入的次数。

int(input("...")应该放在循环内部但True/False检查之外。

由于只有两个可能的答案(“速度OK”和“减速”),请了解如何验证这个布尔值。

剧透。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接