如何在我的勾股定理代码中修复此 While 语句?

How do I fix this While statement in my Pythagorean theorem code?

所以我正在尝试编写一个简单的代码,在我输入 A、B 和 C 之后为我计算勾股定理,但是代码跳过了我的 While 语句,我尝试将它们重写为 if 语句以查看如果可行,它会再次跳过它,我需要一些帮助,谢谢,顺便说一句,我确实意识到在图片中我的 while 循环是打开的并且没有任何结束它们但我确实曾经在那里但我有当我更改为 If 语句时将它们取出。My Code I cant seem to understand

当您使用 input() 时,输入以字符串形式出现,并且在您的 while 循环中,您将条件设置为等于 1(作为整数)。

对此的解决方案是:

varname = int(input("")) #this way it converts your input into an integer

正如 python 文档指出的那样,输入函数 returns 一个字符串:

input([prompt]) If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read, EOFError is raised.

如果你不知道,你想调试和弄清楚,你可以做类似 print(type(Yes_No)) 的事情,你可以看到它是一个字符串类型,所以当你评估这个表达式时:while Yes_No == 1,它 returns 错误。

所以在这种情况下的解决方法是将输入行更改为

 Yes_No = int(input("Do you have the hypotenuse? For yes press 1 or for no press 2"))

当您从用户那里获取 input() 时,它会被 return 编辑为字符串。假设用户输入 1 它将被存储为 "1" # which is a string。现在,当您比较 Yes_No == 1 时,它 return 变成了 False,因为 "1" == 1False


所以你需要将它解析(转换)成一个数字(整数),这可以通过将字符串传递给int()函数来完成。它将 return 该字符串的整数表示。对所有的输入做同样的事情,你的问题就解决了!


您的代码的另一个问题是您没有在任何 while 循环中更新 Yes_No 的值。这意味着它会导致无限循环,它会继续执行 while 循环,因为一旦条件变为 True 它不会变成 False 因为 Yes_No 的值没有更新。