我在我的代码,使这个程序按指示。。。在
要求用户输入三个数字,它们是一个潜在三角形的边。在
如果边不能是三角形的有效边,告诉用户“真遗憾,那不是三角形!“,否则说它是有效的。在
如果三个边都相等,告诉用户“这是一个等边三角形”。在
如果两边相等,告诉用户“这是等腰三角形”。在
提示:要成为三角形,最短的两条边之和必须大于最长的边。如果边是A、B和C,则A+B+C必须大于最长边的两倍。在
这是我到目前为止所拥有的,我认为它应该运行得很好,但是当我试图运行它时,我遇到了一个错误。我能做些什么让它顺利运行吗?谢谢你抽出时间。在
import math
a = input("Please Enter Side A ")
b = input("Please Enter Side B")
c = input("Please Enter Side C ")
d = a+b+c
if d < (2*c)
print"Shame on you, that is not a triangle!"
elif d > (2*c):
print"You Have Two Possible Answers: "
else:
xone = a=b=c
xtwo = a=b
print "It's Equilateral:",xone,"
print "It's Isosceles:",xtwo,"
我注意到的几个问题:
您的
if
语句中缺少冒号。这是我第一次运行它时收到的错误消息:这是一个很好的指示问题所在:解释器期望这里有一个冒号。所以我们解决了:
^{pr2}$转到下一个错误。
悬挂双引号。我第二次运行它,错误如下:
这一行有三组双引号。前两个将字符串
It's Equilateral
括起来,第三个开始一个从未闭合的字符串。所以我们去掉了双引号(在第二个打印语句上也一样):xone
并不总是分配的。。程序现在运行成功,但是当我输入26、13和4这三个长度时,我得到了另一个错误:问题是
xone
只在if
语句的一个分支中定义,但它作为等边三角形打印的一部分被调用,无论哪个分支被跟随。您需要重新排列打印语句以解决此问题。你的三角形检查实际上不起作用。以下是你的提示(强调我的):
考虑我上面的例子:26、13和4。我从来没有警告过我这不是三角形,但很明显这样的三角形是不可能的。您任意地决定
c
是最长的边,但是为什么呢?没有理由相信那是真的。也许你的程序不会产生你期望的结果,但是这行:
缺少结肠,比如:
^{pr2}$这里有很多问题。让我们一行一行地看。在
这是一个
^{pr2}$IndentationError
,因为第二行是从第一行开始的。在这不是一个错误,但它与另外两个错误不一致,因为它在
"
之前缺少一个空格,所以看起来不太好。在这不是一个错误,但是如果您调用有意义的代码,例如,},这会使代码更易于调试。在
perimeter
,而不是{您缺少一个
:
。这是一个语法错误。所有像if
这样的复合语句都有冒号。在而且,这并不意味着“A+B+C必须大于最长边的两倍。”你将A+B+C与最后一条边的两倍进行比较,后者应该是最短的。此外,“小于”不表示“不大于”,“小于或等于”表示“不大于”。所以,你可能想要的是
if d <= 2*max(a, b, c)
。在这不是一个错误,但是…有三个可能的答案:等边、等腰和两个都不是。在
另外,打印出}不是一回事,这是作业要求的。通常,课堂作业,甚至是现实生活中的程序,都是通过自动测试来测试的,而不是由一个可以说“是的,那是一个90%学分的东西”的人来测试的。所以,即使这不是真的,你也应该习惯于按照规定写你的输出(理想情况下,编写您的自己的测试用例以检查输出)。在
You Have Two Possible Answers:
,然后再打印It's Equilateral: True
,然后It's Isosceles: False
与打印{为什么不是两个案子,而是三个案子?它们相等(既不小也不大)的情况有什么特别之处?在
这是法律法规,但并不代表你的想法。}。这里您想要的是
=
意味着赋值,所以取c
的值,并将其赋给xone
、a
和{==
进行等式测试:xone = a == b == c
。(下一行也是如此。)而且,}又是无意义的名称;为什么}?在
xone
和{is_equilateral
和{这和上面一样有问题,但也不是正确的测试。^{eem>第一个检验是否相等。如果第一面和第三面相等呢?这里需要的是
a==b or b==c or a==c
。在另外,正如所写的,代码会说等边三角形既是等边的也是等腰的。我不确定你给我的定义是否正确。在
这三个案子都是你干的。但是在第三种情况下,你只给
xone
赋值,所以你将得到一个NameError
,除非d == 2*c
。在另外,最后还有一个杂散的
"
。这将给您一个语法错误,因为在行尾没有结束的(非三重引号)字符串是非法的。在这有两个与前一行完全相同的问题。在
除非您修复所有这些问题,否则您的代码将无法运行并执行您的逻辑。(当然,除非你的逻辑是正确的,否则它仍然是不正确的……但是一旦你运行了它,你可以测试它。)
相关问题 更多 >
编程相关推荐