将字符串转换为整数Python

时间:2015-12-15 17:44:25

标签: python string python-2.7

我正在尝试计算数组中0,正数,负数的数量。 我在这里明确地将每个字符串转换为整数:

k = []
n = int(raw_input())
p=neg=z=0
p = int(p)
neg = int(neg)
z = int(z)

for i in range (0,n):
    numb = int(raw_input("numb: "))
    if numb==0:
        z +=1
    if numb<0:
        neg+=1
    if numb>0:
        p +=1
    k.append(numb)

print "Array: ", k
print '%.5f' %z/n
print '%.5f' % neg/n
print '%.5f' %p/n

它一直给我这个错误:/:&#39; str&#39;不支持的操作数类型和&#39; int&#39;。

2 个答案:

答案 0 :(得分:2)

您需要添加parens:

print "Array: ", k
print '%.5f' % (z / n)
print '%.5f' % (neg / n)
print '%.5f' % (p / n)

首先要进行格式化,这样你最终会尝试/结果,这是int的字符串。 parens意味着分裂等...完成并且结果被格式化。

您可能会发现使用str.format更不容易出错:

print '{:.5f}'.format(z / n)

除非你想要将分区放到地板上,否则你应该转换为float而不是int:

n = float(raw_input())

答案 1 :(得分:1)

引用official documentation

  

下表总结了Python中的运算符优先级,   从最低优先级(最少绑定)到最高优先级(大多数   捆绑)。 同一个框中的运算符具有相同的优先级。除非   语法是明确给出的,运算符是二进制的。运营商   同一个盒子组从左到右(除了比较,包括测试,   从左到右都具有相同的优先级和链 - 见   比较 - 和取幂,从右到右分组   左)。

在学习表时,我们可以看到行:

*, /, //, % Multiplication, division, remainder [8]

脚注[8]说:

  

%运算符也用于字符串格式化;同样的优先权   适用。

%/运算符具有相同的优先级。因此 - 它们按标准顺序进行评估。遵循平等:

'%.5f' %z/n == (`%.5f` % z) / n

要更改评估优先级,您需要使用括号。

'%.5f' % (z/n)  # It would format string with a result of z/n operation.