运行Python模块时else分支报SyntaxError无效语法错误如何解决?
语法错误原因
- 核心问题是
Proj05Runner.py中if和else语句之间存在无归属的游离代码:你在if subStr in str:分支第一行就写了return语句,后面4行拼接的字符串既没有和前面的返回值拼接,也没有赋值给任何变量,直接裸写在if块结束后、else语句前,破坏了if-else的语法结构,因此触发了else行的语法报错。 - 次要问题是字符串拼接逻辑错误:你本意是将4行提示文本拼接为完整返回值,但当前写法没有用
+连接多行字符串,也没有用括号包裹多行拼接内容,Python会将每一行识别为独立语句。 - 额外提示:不要用
str作为变量名,str是Python内置的字符串类型关键字,重命名会覆盖原有功能,容易引发后续错误。
修复后模块代码(Proj05Runner.py)
def run(input_str, subStr): """Returns a substring of any given string based upon a given range of characters before and after the substring""" str_range = 3 if subStr in input_str: str_modified = input_str[input_str.index(subStr) - str_range : input_str.index(subStr) + len(subStr) + str_range] # 用括号包裹多行拼接字符串,统一返回 return ( "I certify that this program is my own work " + "\n" + input_str + "\n" + subStr + "\n" + str_modified + "and is not the work of others. I agree not " + "\n" + input_str + "\n" + subStr + "\n" + str_modified + "to share my solution with others. " + "\n" + input_str + "\n" + subStr + "\n" + str_modified + "Print your name here." + "\n" + input_str + "\n" + subStr + "\n" + str_modified ) else: return "ERROR: subStr not found in str!"
优化后驱动代码
import Proj05Runner input_str = 'The lazy brown fox jumped over the fence.' subStr = 'fox' result = Proj05Runner.run(input_str,subStr) print(result)
内容的提问来源于stack exchange,提问作者MMx15
相关产品推荐
相关产品推荐

