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

Mercia ·
更新时间:2024-11-10
· 702 次阅读

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

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
作者:warnel_



assign TO 替换 字符串 字符

需要 登录 后方可回复, 如果你还没有账号请 注册新账号