【问题标题】:Converting string to integer Python将字符串转换为整数 Python
【发布时间】:2015-12-15 17:44:25
【问题描述】:

我正在尝试计算数组中 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

它一直给我这个错误:/: 'str' and 'int' 的操作数类型不受支持。

【问题讨论】:

  • 试试print '%.5f' % (p/n)

标签: python string python-2.7


【解决方案1】:

您需要添加括号:

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

格式是首先完成的,所以你最终会尝试/ 结果,它是一个 int 的字符串。括号表示除法等已完成,结果已格式化。

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

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

此外,除非您希望将除法设置为地板,否则您应该将其转换为 float 而不是 int:

n = float(raw_input())

【讨论】:

    【解决方案2】:

    引用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.
    

    【讨论】:

      猜你喜欢
      • 2013-02-18
      • 2015-09-25
      • 1970-01-01
      • 2010-12-27
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多