You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7脚本在3.6中报SyntaxError,字符串格式化问题求助

问题解答

嘿,这个错误不是因为需要改用f-string,核心原因是Python 3里print从原来的语句变成了必须加括号调用的内置函数,你写的还是Python 2的旧格式,这才触发了语法错误。

具体错误分析

你看到的报错指向这行代码:

print '{0:10} {1:5}'.format("Exercices","Points")

在Python 2里,print是一个语句,直接写内容就行;但到了Python 3,它变成了函数,必须用print(...)的形式调用,少了括号就会被判定为语法错误。

另外你的脚本还有个隐藏坑:sum变量在第一次使用前没初始化,不管在Python 2还是3里都会触发UnboundLocalError,得先把它设为0才行。

修改后的可运行代码(兼容Python 3.6+)

先给你最直接的修复版本,只解决语法错误和变量初始化问题:

with open("points.txt") as myfile:
    print('{0:10} {1:5}'.format("Exercices","Points"))
    sum = 0  # 先初始化求和变量
    for line in myfile:
        entry = line.strip().split(",")
        sum = sum + int(entry[1])
        print("{0:^10} {1:^5}".format(entry[0], entry[1]))
    print("{0:^10} {1:^5}".format("Results", sum))

可选优化:用f-string让代码更简洁

f-string是Python 3.6才引入的特性,确实能让字符串格式化更清爽,但它不是解决当前错误的必须项。如果你想优化代码,可以改成下面这样,顺便把sum换成total(避免和Python内置的sum()函数重名,减少潜在问题):

with open("points.txt") as myfile:
    print(f"{'Exercices':10} {'Points':5}")
    total = 0
    for line in myfile:
        entry = line.strip().split(",")
        total += int(entry[1])
        print(f"{entry[0]:^10} {entry[1]:^5}")
    print(f"{'Results':^10} {total:^5}")

内容的提问来源于stack exchange,提问作者Olive.b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:00:39