我正在尝试计算数组中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;。
答案 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)
下表总结了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.