我陷入了一個非常令人困惑的問題。我嘗試從客戶端向套接字發送三個整數來求解二次方程。但是我嘗試了兩種方法,但它總是給我一個錯誤:ValueError:無法將字串轉換為浮點數:''。請幫我解決這個問題。非常感謝大家。

#Client side
import socket
import sys
HOST, PORT = "127.0.0.1", 50000
while 1 :
# data = " ".join(sys.argv[1: ])
'''
data1 = input('Enter a : ')
data2 = input('Enter b: ')
data3 = input('Enter c: ')
'''
data = input('Enter a, b, c respectively: ')
# create a socket ()
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock :
#
sock.connect((HOST, PORT))
#sock.send(str.encode("\n".join([data1, data2, data3])))
sock.send(str(data).encode())
#
received = sock.recv(1024)
received = received.decode('utf-8')
received = eval(received)
#print('Sent: ', data1, ' ', data2, ' ', data3)
print('Sent: ', data)
print('Received: ', received)
break
# Server side
from encodings import utf_8
import math
from socket import socket, AF_INET, SOCK_STREAM
from sympy import re
BUFFER_SIZE = 1024
s = socket(AF_INET, SOCK_STREAM)
s.bind(("", 50000))
s.listen(5)
print('Server is listening...')
conn, addr = s.accept()
def GiaiPhuongTrinhBac2(a, b, c) :
lst = []
if a == 0 :
if b == 0 :
if c == 0 :
return lst.append('Ph??ng trình v? s? nghi?m!')
else :
return lst.append('Ph??ng trình v? nghi?m!')
else :
x = -(c / b)
return lst.append(x)
else :
delta = b * b - 4 * a * c
if delta == 0 :
return lst.append( (-b) / (2 * a) )
elif delta > 0 :
x1 = (-b - math.sqrt(delta)) / (2 * a)
x2 = (-b math.sqrt(delta)) / (2 * a)
lst.append(x1)
lst.append(x2)
else :
lst.append('Ph??ng trình v? nghi?m!')
while 1 :
'''
received = conn.recv(BUFFER_SIZE).decode('utf-8').split("\n")
data1 = float(received[0])
data2 = float(received[1])
data3 = float(received[2])
if not (data1 and data2 and data3) :
break
print('Received data: ', data1, data2, data3)
'''
received = conn.recv(BUFFER_SIZE).decode('utf-8').strip().split(" ")
print(received)
data1 = float(received[0])
data2 = float(received[1])
data3 = float(received[2])
lst =[]
lst = GiaiPhuongTrinhBac2(data1, data2, data3)
'''
lst = []
lst.append(received)
'''
conn.send(str(lst).encode())
conn.close()
我嘗試輸入 a、b、c 的字串以使用 ' ' 和 '\n' 進行拆分,但似乎不成功。
uj5u.com熱心網友回復:
發送后,接收到的資料被重繪 。因此,while 回圈中的下一輪接收到的變數資料為空。所以你,不要使用 while 回圈或將這些行移到 while 回圈中:
while True:
s.listen(5)
conn, addr = s.accept()
并且在您的代碼中有更多問題,例如您不能附加回報。正確的解決方案:
lst.append('Ph??ng trình v? s? nghi?m!')
return lst
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/447833.html
上一篇:XCode13.1。是否可以截取不適合螢屏的XCUIElement的螢屏截圖?
下一篇:位元組序和網路服務器
