我使用服務器的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)'就足夠了。 –