if语句被跳过,即使该语句为真

时间:2016-03-01 22:43:13

标签: python

我刚开始在python上进行TCP服务器和客户端编程。但是其中一个if语句不起作用,它没有任何意义:

while (1):
    data = s.recv(1024)
    if data == 'finish':
         break
    print data
print 'Finish'

有时最后一条车道会打印完成'而不是完成'它不能退出循环。这应该永远不会发生,因为打印数据'如果data =' finish'则跳过语句。有人能告诉我为什么会这样吗?

3 个答案:

答案 0 :(得分:3)

仅仅因为您在一次通话中将字节发送到send并不意味着您将在一次致电recv时收到这些字节。他们可能会到更小或更大的群体。例如。也许你发送:

c.send('one')
c.send('two')
c.send('three')
c.send('finish')

但你收到了

s.recv(1024) -> 'onetwothreefinish'

或许你收到了

s.receive(1024) -> 'one'
s.receive(1024) -> 'two'
s.receive(1024) -> 'three'
s.receive(1024) -> 'fin'
s.receive(1024) -> 'ish'

答案 1 :(得分:1)

您可以与data.lower进行比较,以确保所有大写字母都更改为小写字母,同时更改while循环并删除多余的大括号

while True:
    data = s.recv(1024)
    if not data:
         break
    print data
print 'Finish

答案 2 :(得分:0)

比较区分大小写。在if语句中使用data.lower()