【问题标题】:Sum of parts of a string in PythonPython中字符串各部分的总和
【发布时间】:2015-10-11 16:10:17
【问题描述】:

我正在学习使用 John V. Guttag 所著的“Python 计算和编程简介”一书进行编程。上面有一个练习,内容如下:

'手指练习:设 s 是一个包含一系列 用逗号分隔的十进制数,例如 s = '1.23,2.4,3.123'。写 打印 s 中数字之和的程序。'

我的尝试是:

#Finger exercise [MIT] PAGE 42     12:50 | 11.10.2015
s = ','+raw_input('Enter a string that contains a sequence of decimal numbers separated by commas, e.g. 1.23,2.4,3.123): ')+','
    total = 0
    for l in range(0,len(s)):
        if s[l] == ',':
            c = l + 1
            while s[c] != ',':
                c = c + 1
                if s[c] == ',':
                    total = total + int(s[int(l),int(c)])
print total

但它一直显示此错误

TypeError:字符串索引必须是整数,而不是元组

我尝试在网上寻求解决方案,但只找到了可行的解决方案但不适用于我现在已经提供的内容。 有什么帮助吗?

【问题讨论】:

  • 等你了解了基础知识后,试试这个sum(map(float,s.split(',')))。单行工作

标签: python string sum slice


【解决方案1】:

在此处访问您的字符串项时,您正在创建一个元组:

s[int(l),int(c)]

逗号通常创建元组。

相反,您想在此处使用冒号的切片:

s[int(l):int(c)]

请注意,这两个变量都已经是整数,因此您实际上不需要转换它们:

s[l:c]

还要注意,尽管您接受浮点数作为输入,但您正在对整数值求和。因此,不要添加int(s[l:c]),而是要添加float(s[l:c])

【讨论】:

    【解决方案2】:

    首先,第一个逗号之前没有任何处理。

    接下来,您应该至少在开始时对它的每个部分进行注释,以便您清楚每一行在做什么。

    您不需要在多个位置检查“,”,保留一个变量。

    【讨论】:

    • 你读过OP的最后一句话吗?他们有点在寻找“这就是你可以做到的”解决方案,而是一个修复他们的代码的解决方案。
    【解决方案3】:

    我找到了一个解决方案,希望它有用:

    s = "1.23, 2.4, 3.123"
    
    news = s.split(",")
    
    total = 0 
    
    for string in range(len(news)):    
        total += float(news[string])
    
    print(total)
    

    【讨论】:

      猜你喜欢
      • 2020-01-18
      • 2011-06-27
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      相关资源
      最近更新 更多