字符串内的替换之SyntaxError: cannot assign to literal

故事扮演 提交于 2020-02-26 23:24:11

问题描述:
当想替换字符串内的部分习惯表述时报错,源码如下:

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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!