char在python中被打印而不是整数

时间:2015-07-05 12:23:06

标签: python

嘿伙计们,我是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]。我想以列表形式打印答案。

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)

作为一名新手,我可以在一定程度上了解你的情况 所以我们在这里解决所有问题:

  1. inp将从用户处获取一个字符串。例如:&#34; 12345&#34;,&#34; 12 45&#34;等。
  2. inp.isdigit()检查字符串inp是否由数字组成。请注意,我们严格讲的是数字(没有其他特殊字符) 例如:"12345".isdigit()返回True"12 45"。isdigit()返回False
  3. inp.split()将返回由空格分隔的单词(或项)列表。由于,isdigit()split()相互矛盾,因此您无法得到正确的答案。&#34; 12 45&#34; (或类似的东西)。
  4. 希望你明白我的意思。

    提示:不要使用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。