我使用服务器的telnet获得一个字符串'x * y',其中x和y都是自然数。我需要的是将正确答案发回服务器。当位数小于22时,我从下面的代码中得到的答案是正确的,但如果更多 - 出现问题。下面是代码:python中的错误乘法
import telnetlib
tn = telnetlib.Telnet(host, port)
while 1:
eq = tn.read_some().decode("utf-8")
eq = eq[:-2]
params = eq.split()
if (eq != ""):
try:
x=int(params[0])
y=int(params[2])
res = x*y
tn.write(str(res).encode('latin-1'))
except:
print(eq)
break
例如,如果
x=5892389056261064794905 #,
y=7028717678246449032337 #then
res=41415939126848056288120885900543594617842985
,这是正确的。但是,如果
x=10834381661191220895731,
y=1501035997383808848779 #,
的aswer是不正确的,主要的问题是,在Python Shell简单表达
10834381661191220895731 * 10834381661191220895731
给出了正确的答案
什么是不正确的答案? – xiaowl
Python不是C,这样的类型转换根本不可读。 –
请注意,python类型实现为可调用,而不是强制转换;你的'int()'和'str()'的额外括号可以工作,但会造成阅读混乱。 'int(params [0])'就足够了,'str(res)'就足够了。 –