【问题标题】:'str' object is not callable - Converter'str' 对象不可调用 - 转换器
【发布时间】:2014-03-17 16:57:54
【问题描述】:

当我运行我的代码时,程序总是返回:

'str' object is not callable在第九行,我不知道为什么。

sum = 0
count = 0
binNum = input('Input your number: \n')

while count != len(binNum):
  if binNum(count) == 1:
    sum = sum + 2**count
    count = count + 1
  else:
    count = count + 1
if count == len(binNum):
    print(sum)

感谢您的帮助。

【问题讨论】:

标签: python string syntax converter


【解决方案1】:

看起来您正在尝试访问字符串 binNum 的第 countth 个字符,并查看它是否是字符“1”。在这种情况下,您应该使用方括号。并将其与字符“1”进行比较,而不是数字 1。

if binNum[count] == '1':

顺便说一句,如果您尝试将一串 1 和 0 转换为其等效的十进制数字,则您正在向后扫描数字。在您的算法中,最左边的数字对总和的贡献最小,而最右边的数字贡献最大。您可能希望在扫描之前反转输入字符串。

binNum = input('Input your number: \n')
binNum = binNum[::-1]

【讨论】:

  • works but i done it differently, where input was changed to binNum = str(input('Input your number: \n'))`和if int(binNum[count]) == 1:的if语句
【解决方案2】:

你必须改变

if binNum(count) == 1:

if count == 1:

另外,您可以将输入行转换为:

binNum = str(input('Input your number: \n'))

【讨论】:

  • 你想在你的代码中实现什么。我指出语法错误。
  • 将二进制数转换为十进制数。但现在它适用于凯文给出的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-07
  • 2011-06-07
  • 2019-03-05
  • 1970-01-01
相关资源
最近更新 更多