Python 麻省理工开放式课程CS实践测试1简介?
下面的代码包含两个语义错误。更正它,以便它读取整数,直到用户输入-1,然后打印整数之和(8点): 我猜您需要用实际列表替换Python 麻省理工开放式课程CS实践测试1简介?,python,Python,下面的代码包含两个语义错误。更正它,以便它读取整数,直到用户输入-1,然后打印整数之和(8点): 我猜您需要用实际列表替换for循环中的getLines()。函数必须返回列表输入 但是在函数的while循环中,如果行==-1:永远不会返回True。为什么 谢谢 我猜您需要将for循环中的“getLines()”替换为实际的列表。函数必须返回列表“输入” 没错 但是在函数的while循环中,“if line==-1:”永远不会返回True。为什么 在交互式解释器上尝试以下操作: >>
for循环中的getLines()
。函数必须返回列表输入
但是在函数的while循环中,如果行==-1:
永远不会返回True。为什么
谢谢
我猜您需要将for循环中的“getLines()”替换为实际的列表。函数必须返回列表“输入”
没错
但是在函数的while循环中,“if line==-1:”永远不会返回True。为什么
在交互式解释器上尝试以下操作:
>>> '-1' == -1
False
除了在非常有限的一组特殊情况下(例如,int
和float
),不同类型的值永远不相等
现在查看返回的内容:
…然后,函数从输入中读取一行,将其转换为字符串(去掉尾随的换行符),并返回该字符串
因此,当您键入-1
时,原始输入将返回字符串'-1'
您可以通过检查字符串'-1'
而不是数字-1
来解决此问题。但这就是你想要的吗?如果有人用空格键入,比如说,-1
,这算是退出吗?如果是这样,您可能需要调用line.strip()
但是这里实际上还有第三个错误……事实上他们只声明了两个错误,这让我觉得他们希望你一起解决这两个问题
输入将是一个字符串列表。你可以把它们加在一起,但要做的只是把它们连接成一个大字符串,而不是把它们作为数字加起来。因此,实际上,您可能需要将每个字符串转换为整数,例如:
try:
number = int(line)
except ValueError:
print 'I said a positive integer, does %s look like an integer?' % (line,)
continue
如果这样做,前面的问题就会神奇地消失,因为number==-1
将为真
当然,您还需要了解如何处理用户键入的0
或-32
或其他有效的int
,但既不是正整数也不是-1
。难道你不喜欢边缘案例吗
try:
number = int(line)
except ValueError:
print 'I said a positive integer, does %s look like an integer?' % (line,)
continue