嘿伙计们,我是python编程的新手。正如标题所示,对于以下代码片段,char正在打印而不是整数。感谢。
nl=[]
inp=raw_input()
if inp.isdigit():
list=inp.split()
for s in list:
nl.append(int(s))
print nl
例如,如果我将输入设为1 2 3,则获得的输出为[' 1',' 2',' 3']但预期输出是[1,2,3]。我想以列表形式打印答案。
答案 0 :(得分:2)
试试这个:
<div class="col-sm-3 col-xs-6">1</div>
<div class="col-sm-3 col-xs-6">2</div>
<div class="col-sm-3 col-xs-6 col-xs-push-6">3</div>
<div class="col-sm-3 col-xs-6 col-xs-push-6">4</div>
<div class="col-sm-3 col-xs-6 col-xs-pull-6">5</div>
<div class="col-sm-3 col-xs-6 col-xs-pull-6">6</div>
<div class="col-sm-3 col-xs-6">7</div>
<div class="col-sm-3 col-xs-6">8</div>
您必须先拆分输入才能使用nl = [int(n) for n in raw_input().split(' ') if n.isdigit()]
print nl
,因为str.isdigit()
不是数字。
警告:如果数字可以是浮点数,则应使用正则表达式而不是'1 2 3'
答案 1 :(得分:2)
作为一名新手,我可以在一定程度上了解你的情况 所以我们在这里解决所有问题:
inp
将从用户处获取一个字符串。例如:&#34; 12345&#34;,&#34; 12 45&#34;等。inp.isdigit()
检查字符串inp
是否由数字组成。请注意,我们严格讲的是数字(没有其他特殊字符)
例如:"12345".isdigit()
返回True
而"12 45"
。isdigit()返回False
。 inp.split()
将返回由空格分隔的单词(或项)列表。由于,isdigit()
和split()
相互矛盾,因此您无法得到正确的答案。&#34; 12 45&#34; (或类似的东西)。希望你明白我的意思。
提示:不要使用list
是变量名称。代码可能工作正常但不常见。
答案 2 :(得分:1)
我喜欢上面的列表理解但是这里使用for循环是一样的(没有使用isdigit) -
nl = []
inp = raw_input()
lst = inp.split(' ')
for s in lst:
nl.append(int(s))
print nl
几点快点。等号(=)之前和之后的空格提高了可读性。您可能应该避免使用list作为变量名,因为list是内置函数。 raw_input返回一个字符串,因此“if inp.isdigit()”将始终在代码中返回false。