所以我试着编写一个简单的代码,在我输入A,B和C之后会为我做毕达哥拉斯定理,但是代码正在跳过我的While语句,并且我尝试将它们重写为if语句以查看是否存在工作,再次它会跳过它,我需要一些帮助请和谢谢顺便说一下我确实意识到在我的while循环打开并没有任何结束它们的图片但我确实在那里有一点但我已经拿走了它们当我改为If语句时出来。My Code I cant seem to understand
答案 0 :(得分:2)
当您使用input()
时,输入以字符串形式出现,并且在while
循环中,您将条件设置为等于1(作为整数)。
解决方法是:
varname = int(input("")) #this way it converts your input into an integer
答案 1 :(得分:0)
正如python文档指出的那样,输入函数返回一个字符串:
输入([提示]) 如果存在prompt参数,则将其写入标准输出 没有尾随换行符。然后该函数从输入中读取一行,将其转换为字符串(剥离尾随换行符),然后返回该行。读取EOF时,会引发EOFError。
如果您不知道并且想要调试并弄清楚,可以执行类似print(type(Yes_No))
的操作,您可以看到它是字符串类型,因此在评估此表达式时:{{1它返回false。
因此,此情况下的修复方法是将输入行更改为
while Yes_No == 1
答案 2 :(得分:0)
当您从用户那里获取input()
时,它会以字符串形式返回。假设用户输入1
,则会将其存储为"1" # which is a string
。现在,当您比较Yes_No == 1
时,它返回了False
,因为"1" == 1
是False
。
因此,您需要将其解析(转换)为数字(整数),这可以通过将字符串传递给int()
函数来完成。它将返回该字符串的整数表示形式。对所有输入执行相同操作,您的问题将得到解决!
您的代码的另一个问题是,您未在任何Yes_No
循环中更新while
的值。这意味着它将导致无限循环,它将继续执行while循环,因为一旦条件变为True
,它将不会变为False
,因为Yes_No
的值未更新。