TypeError:只能将str(不是“ int”)连接到str SUM

时间:2018-10-06 19:29:51

标签: python

我正在尝试制作一个程序,将一个数字的立方求和到一个上限。

数学公式为(n *(n + 1)/ 2)^ 2

我在Python中的代码:

def cube_numbers():
   upper_boundary = 0
   cube_sum = 0
   upper_boundary = input("Please enter the upper boundary:")
   cube_sum = ((upper_boundary * (upper_boundary + 1) / 2)**2)
   print("The sum of the cube of numbers up to" & upper_boundary & "is" & cube_sum)
#main
cube_numbers()

但是出现以下错误:

  Traceback (most recent call last):

  File "C:/Users/barki/Desktop/sum of cubes.py", line 10, in <module>
    cube_numbers()

  File "C:/Users/barki/Desktop/sum of cubes.py", line 5, in cube_numbers
    cube_sum = ((upper_boundary * (upper_boundary + 1) / 2)**2)
TypeError: can only concatenate str (not "int") to str

2 个答案:

答案 0 :(得分:3)

功能的目的不应该是print。同样最好将input提示移出函数,然后将该值传递到函数中。然后,我们可以做的是将upper_boundary的输入作为int,然后将其传递给cube_numbers。现在该返回值将为cube_sum,我们可以使用格式化打印来打印该语句。

def cube_numbers(x):
    y = int(((x * (x + 1) / 2)**2))
    return y

upper_boundary = int(input("Please enter the upper boundary: "))
cube_sum = cube_numbers(upper_boundary)

print('The sum of the cube of numbers up to {} is {}.'.format(upper_boundary, cube_sum))
# The sum of the cube of numbers up to 10 is 3025.

答案 1 :(得分:0)

  

print(“数字立方的总和,直到&&upper_boundary&” is“&cube_sum)

您应该正确设置代码格式,或者使用.format表示法,或者使用,分隔不同的值,或者使用str将整数类型的值转换为字符串来合并它们(不推荐)< / p>

始终使用.format表示法进行格式化。

示例

print("The sum of the cube of numbers up to {} is {}".format(upper_boundary, cube_sum))

您还可以使用索引进行格式化:

示例

print("The sum of the cube of numbers up to {0} is {1}".format(upper_boundary, cube_sum))

在这种情况下,format方法中位于第一位的任何内容都将在字符串中排在“ 0”位置。

另一种方法是通过实际提供一些名称作为占位符:

示例

print("The sum of the cube of numbers up to {upper_bnd} is {cube_sm}".format(upper_bnd = upper_boundary, cube_sm = cube_sum))

希望这会有所帮助。