Python中inputWithDefault函数的f-string语法错误排查求助
问题分析与修正
错误原因
你的代码里f-string的引号使用冲突了:外层用双引号包裹f-string,但内部直接写了" ",Python解析时会把这个内部的双引号当成f-string的结束标记,导致后续的{}无法被正确识别,从而抛出语法错误。
修正后的代码
def inputWithDefault(text: str, default): # 用单引号定义内部空格字符串,避免和外层双引号冲突 result = input(f"{' ' * len(text)}{default}\r{text}") # 用isinstance做类型判断,这是Python的标准写法 return default if not isinstance(result, type(default)) else result
关键修改点
- 引号冲突修复:将f-string内部的空格字符串从
" "改为' ',这样外层双引号和内层单引号互不干扰,Python能正确解析所有f-string占位符。 - 类型判断优化:把
result is type(default)替换为isinstance(result, type(default)),is用于判断对象身份,而isinstance才是判断对象类型的正确方式,能覆盖更多合法的类型匹配场景。 - 额外优化:
int(len(text))可以直接简化为len(text),因为len()返回的本身就是整数,无需强制转换。
内容的提问来源于stack exchange,提问作者JK Bot
相关产品推荐
相关产品推荐

