QUE:下面是我的代码,为什么到date_mark为11的时候,没有跳出循环,而是一直不停的循环下去?
import time
def send_beat():
date_mark=1
while True:
if date_mark%2==1:
print('date_mark值:',date_mark)
time.sleep(0.5)
date_mark=date_mark+2
elif date_mark==11:
print('process is dead in',date_mark)
break
else:
break
if __name__=='__main__':
send_beat()
if date_mart%2==1:
.......
else date_mark ==11:
.......
if和esleif条件在date_mark等于11时都正确,所以遵循从上而下原则走了if条件,所以在一直循环
你把if和else的条件换一下位置,先判断是不是为11在判断对2取余
date_mark ==11 首先满足了第一个if条件,所以不会往下执行
import time
def send_beat():
date_mark=1
while True:
if date_mark%2==1 and date_mark < 11:
print('date_mark值:',date_mark)
time.sleep(0.5)
date_mark=date_mark+2
else:
print('process is dead in',date_mark)
break
if name=='__main__':
send_beat()
(条件位置改一下,不需要添加elseif语句了)有用望采纳,谢谢!
if (条件1)
{
//语句1
}
else if (条件2)
{
//语句2
}
if 块和 else if 块本质上是互斥的!也就是说,一旦语句1得到了执行,程序会跳过 else if 块,else if 块中的判断语句以及语句2一定会被跳过;同时语句2的执行也暗含了条件1判断失败和语句1没有执行;当然还有第3个情况,就是条件1和条件2都判断失败,语句1和语句2都没有得到执行。
11的时候 跳入你的if中,不会再到 elif了。
这么改,就行了
import time
def send_beat():
date_mark=1
while True:
if date_mark==11:
print('process is dead in',date_mark)
break
if date_mark%2==1:
print('date_mark值:',date_mark)
time.sleep(0.5)
date_mark=date_mark+2
else:
break
if __name__=='__main__':
send_beat()
调换if和elif的判断顺序就可以了,还是得根据代码逻辑来判断
if 语句用法是 多者选其一,date_mark==11在 第一个if 语句里已经满足条件,所以elif的语句不会执行。解决方法,有楼上大神给出,调换位置,或者将elif判断语句嵌套在if语句里面。建议 第一种