Python map()函数
为什么我在下面的代码中使用map()函数发生错误?为什么不能在名单x
中映射转换负数。输出应该像“1 - > 2 - > 3”。只要我输入-999
,该列表就应该结束。我得到一个错误,如:Python map()函数
Traceback (most recent call last):
File "c2.py", line 3, in <module>
x=map(int,x)
ValueError: invalid literal for int() with base 10: '-'
代码:
while(1):
x=list(raw_input("Input a number\n(type -999 to end);"))
x=map(int,x)
if x<0:
break
pass
print x
del x[len(x)]
for i in range(0,(len(x))):
print "%d-->" %(x[i]),
没有解决无关的其他虫子地图,问题是,地图返回一个列表。
检查它在IDLE:
>>> map(int, ["123", "456", 7.3])
[123, 456, 7]
>>>
所以x<0
是没有意义的,你会想是这样分钟(X)< 0一些需要列表作为输入。
这种情况下,您应该分别隔离并处理每个条目。获取输入行,扫描它的空格(或分割(),如下所述)并分析每个整数。
即使您正确使用了拆分和映射,您也会自动将同一行上的整数与-999一起处理,但在它之后。而任何不解析的东西都不会给你足够的反馈,以便知道真正出错的地方。
解析用户输入通常必须是低级和面向字符的,否则无法诊断它们的错误输入。有时候生活很乏味。
(还有,为什么空列表,然后尝试打印吗?)
谢谢...得到它:)
x=[]
while(1):
s=raw_input("Input a number\n(type -999 to end);")
s=int(s)
x.append(s)
if s<0:
break
pass
print "\n%d" %(x[0]),
for i in range(1,(len(x))):
print "-->%d" %(x[i]),
print "\n\nNumber of items = %d" %(len(x)-1)
不要回答自己,在未来,编辑这样的东西到原来的文章下的酒吧或什么的。否则,人们将继续回答你的问题。 – 2014-09-03 13:13:40
@JonJayObermark请参阅http://meta.stackexchange.com/a/216722/248731 - 答案应该是答案,如果其他用户认为可以在OP上进一步改进,欢迎尝试。 – jonrsharpe 2014-09-03 13:16:36
对不起。这是奇怪的礼节,但我想这是当地的规则。 (我确实看到了我一直在这里做的事情,而且我个人很欣赏它)。如果这是答案,至少所述的问题需要编辑,因为答案与OP中的实际问题或标题。 – 2014-09-03 15:08:53
'INT(X)'的确会转换'x'到一个整数,不需要'map';但如果'x'是一个列表则不会。所以你也应该删除第二行的'list'调用。 – Kevin 2014-09-03 12:52:11
输入格式应采用何种格式? ''1 2 3 4 -999“'在一条线上,还是单独的输入?注意'list(“ - 999”)== [' - ','9','9','9']'。 – jonrsharpe 2014-09-03 12:52:59
由于'raw_input'返回一个字符串,'list(raw_input(...))'会将该字符串分解为包含原始字符串的字符的列表。 – chepner 2014-09-03 12:58:08