Python 2.7和Python 3中的范围差异
我在Python2和Python3上运行了以下代码Python 2.7和Python 3中的范围差异,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我在Python2和Python3上运行了以下代码 i = int(input()) for j in range(i): k = int(input()) print(k*k)%(1000000000+7) 输入来自包含以下内容的文件 2 2 1 Python2版本运行良好,但Python3给出了此错误 4 Traceback (most recent call last): File "solution.py", line 4, in <module>
i = int(input())
for j in range(i):
k = int(input())
print(k*k)%(1000000000+7)
输入来自包含以下内容的文件
2
2
1
Python2版本运行良好,但Python3给出了此错误
4
Traceback (most recent call last):
File "solution.py", line 4, in <module>
print(k*k)%(1000000000+7)
TypeError: unsupported operand type(s) for %: 'NoneType' and 'int'
4
回溯(最近一次呼叫最后一次):
文件“solution.py”,第4行,在
打印(k*k)%(100000000+7)
TypeError:不支持%的操作数类型:'NoneType'和'int'
为什么在Python 3中会出现此错误?在Python 2中如何更正此错误?解析如下:
n = (k*k)%(1000000000+7)
print n
n = print(k*k)
n%(1000000000+7) # TypeError
print((k*k)%(1000000000+7))
在Python 3中,解析方式不同,如下所示:
n = (k*k)%(1000000000+7)
print n
n = print(k*k)
n%(1000000000+7) # TypeError
print((k*k)%(1000000000+7))
这是由于将print
从语句更改为函数所致。打印函数的返回代码为None
,不能与余数运算符%
一起使用
还要注意Python2上的
input
和Python3之间的区别,Python2的解析如下:
i = int(input())
for j in range(i):
k = int(input())
print(k*k)%(1000000000+7)
n = (k*k)%(1000000000+7)
print n
n = print(k*k)
n%(1000000000+7) # TypeError
print((k*k)%(1000000000+7))
在Python 3中,解析方式不同,如下所示:
n = (k*k)%(1000000000+7)
print n
n = print(k*k)
n%(1000000000+7) # TypeError
print((k*k)%(1000000000+7))
这是由于将print
从语句更改为函数所致。打印函数的返回代码为None
,不能与余数运算符%
一起使用
还要注意Python2和Python3上的
input
之间的差异这与范围无关。您只是尝试在None
上使用模运算,这就是print函数返回的结果。只需按如下方式重新排列这些论题:
i = int(input())
for j in range(i):
k = int(input())
print(k*k)%(1000000000+7)
n = (k*k)%(1000000000+7)
print n
n = print(k*k)
n%(1000000000+7) # TypeError
print((k*k)%(1000000000+7))
希望这有帮助 它与范围
无关。您只是尝试在None
上使用模运算,这就是print函数返回的结果。只需按如下方式重新排列这些论题:
n = (k*k)%(1000000000+7)
print n
n = print(k*k)
n%(1000000000+7) # TypeError
print((k*k)%(1000000000+7))
希望这有帮助 在Python 3中,print
是一个函数,因此k*k
是print()
的一个参数,然后打印的结果(None)被赋予%
操作符。要解决这个问题,只需在整件事的周围加上括号(当然不包括实际的print
word)。如果你想打印(k*k)%(100000000+7)
的结果,你必须将整件事用括号括起来:print((k*k)%(100000000+7))
。顺便说一句:这在python和python3中产生相同的结果。(当您开始使用逗号或关键字参数时,输出会发生变化…)在Python 3中,print
是一个函数,因此k*k
是print()
的一个参数,然后打印的结果(无)被赋予%
操作符。要解决这个问题,只需在整件事的周围加上括号(当然不包括实际的print
word)。如果你想打印(k*k)%(100000000+7)
的结果,你必须将整件事用括号括起来:print((k*k)%(100000000+7))
。顺便说一句:这在python和python3中产生相同的结果。(开始使用逗号或关键字参数时,输出会发生变化…)