在这个挑战中,我必须读取服务器正在打印的内容,提取2个整数值val1和val2,计算val1的平方根并乘以val2并将结果发送到服务器。
我设法做到了这一切,但我不断得到错误的答案。 这是我的代码:
import math
import socket
HOST = "challenge01.root-me.org" # The server's hostname or IP address
PORT = 52002 # The port used by the server
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
data = s.recv(1024)
print(data)
print("a="+str(data[171:174]))
print("b="+str(data[191:195]))
a=math.sqrt(int(data[171:174]))
b=int(data[191:195])*a
print(b)
c=bytes(str(b)+"\n",'utf-8')
print("c="+c.decode())
# s.send(c.encode())
s.send(c)
data2=s.recv(1024)
print(f"Received {data2!r}")
将结果发送到服务器需要将结果转换为字节以及“ ”,所以我想可能转换出错了,但是当我将其转换回字符串时,我得到了相同的结果。
所以我真的看不出问题所在。
感谢您的帮助。
这是因为你有 a 将 b 四舍五入到小数点后两位。创建一个 round 变量并使用 round.() 函数。 r= 圆(b, 2)
import math
进口插座
HOST = "challenge01.root-me.org" # The server's hostname or IP address
PORT = 52002 # The port used by the server
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
data = s.recv(1024)
print(data)
print("a="+str(data[171:174])) #WHY HOW ? ?W? ? ? ?
print("b="+str(data[191:195]))
a=math.sqrt(int(data[171:174]))
b=int(data[191:195])*a
r= round(b, 2)
print(r)
c=bytes(str(r)+"\n",'utf-8')
print("c="+c.decode())
# s.send(c.encode())
s.send(c)
data2=s.recv(1024)
print(f"Received {data2!r}")