问题描述:
当想替换字符串内的部分习惯表述时报错,源码如下:
num1 = int(input("请输入起始序数n1:"))
num2 = int(input("请输入结束序数n2:"))
fuc = input("请输入以n为变量的通项公式(eg:2*n+1):")
list_fuc = []
if "^" in fuc:
"^" = "**" #问题处
for n in range(num1,num2+1):
list_fuc.append(eval(fuc))
print("该数列的和为:"+str(sum(list_fuc)))
报错:
File "C:\Users\28654\Desktop\sub可擦除脚本.py", line 7
"^" = "**"
^
SyntaxError: cannot assign to literal
[Finished in 0.2s]
赋值语句不能直接替换字符串中的旧字符串,而应当使用replace()函数
str.replace(old,new[,max])
其中max是最高替换次数,可不填写则为全部替换
改写后:
num1 = int(input("请输入起始序数n1:"))
num2 = int(input("请输入结束序数n2:"))
get_fuc = input("请输入以n为变量的通项公式(eg:2*n+1):")
list_fuc = []
if "^" in get_fuc:
fuc = get_fuc.replace("^","**")
for n in range(num1,num2+1):
list_fuc.append(eval(fuc))
print("该数列的和为:"+str(sum(list_fuc)))
注意replace()函数返回新字符串但不改变原字符串,故需要将结果赋给新变量名fuc
eg:计算通项(n^3+n)/(n+1)在(1,10)的和:
请输入起始序数n1:1
请输入结束序数n2:10
请输入以n为变量的通项公式(eg:2*n+1):(n^3+n)/(n+1)
该数列的和为:345.9602453102453