【问题标题】:How do I fix this While statement in my Pythagorean theorem code?如何在我的勾股定理代码中修复此 While 语句?
【发布时间】:2018-03-08 05:04:12
【问题描述】:

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

【问题讨论】:

    标签: python loops if-statement while-loop statements


    【解决方案1】:

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

    解决方案是:

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

    【讨论】:

      【解决方案2】:

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


      所以你需要将它解析(转换)成一个数字(整数),这可以通过将字符串传递给int()函数来完成。它将返回该字符串的整数表示。对所有输入执行相同操作,您的问题将得到解决!


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

      【讨论】:

        【解决方案3】:

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

        输入([提示]) 如果提示参数存在,则将其写入标准输出 没有尾随换行符。然后该函数从输入中读取一行,将其转换为字符串(去除尾随的换行符),然后返回。读取 EOF 时,会引发 EOFError。

        如果您不知道这一点并且想调试并弄清楚,您可以执行print(type(Yes_No)) 之类的操作,您可以看到它是一个字符串类型,所以当您评估这个表达式时:while Yes_No == 1,它返回假。

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

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

        【讨论】:

        • 感谢您的澄清,解释了很多,并且可能会帮助解决未来的问题,所以再次感谢您
        猜你喜欢
        • 2019-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-24
        • 1970-01-01
        • 1970-01-01
        • 2021-03-23
        • 2020-11-07
        相关资源
        最近更新 更多