2025-11-20 05:22:51
哎,这两个写法到底差在哪呢?首先看int(sqr(n)),sqr(n)就是算n的平方,比如n等于3的话,sqr(3)等于9,然后int(9)还是9。而-int s这个写法,负号和乘号优先级不同,Python会先算int s,但int是类型名不能直接乘,比如写成int5就会报错。所以前者是算平方再转整数,后者是语法错误。
为啥会有这种区别呢?因为Python的运算符优先级有讲究,负号属于一元运算符,比乘法优先级高。所以-int s会被拆成-(int s),但int不能和变量s相乘。比如当s是5的时候,int5就会报错类型错误。而int(sqr(n))是先算平方再转整数,比如n=3.5的话,sqr(3.5)=12.25,int(12.25)=12。所以前者是安全计算,后者是语法陷阱。特别注意,如果写成-ints,Python会提示"int"是类型名不能参与乘法运算,而int(sqr(n))永远能得到整数结果。
本题链接: