我正在尝试制作一个程序,将一个数字的立方求和到一个上限。
数学公式为(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
答案 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))
希望这会有所帮助。