python-3.x 当条件满足而不是无限时,我怎么能只打印else或if语句一次而不破坏

xv8emn3q  于 2023-08-08  发布在  Python
关注(0)|答案(5)|浏览(128)

在下面的Python代码中,我检查google是否在它的打印“google.com是在”无限次,我想打印一次,等到它会下降,当google下降,我想打印“google.com是在”只是一次又一次当google上升打印“google.com是在”像明智继续循环没有中断。

hostname = "google.com" #example
while True :
  response = os.system("ping -c 1 " + hostname + "> /dev/null")

#and then check the response...
  if response == 0:
    print (hostname, 'is up!')
  else :
    print (hostname, 'is down!')

字符串

ffscu2ro

ffscu2ro1#

您可以添加变量来检查上一个值。例如,如果响应为0,设置变量值并打印。如果响应值不变,则不打印并更改变量值
就像这样:

hostname = "google.com" #example
state = -1
while True :
    response = os.system("ping -c 1 " + hostname + "> /dev/null")
    if response == 0 and state != 0:
        print(hostname, 'is up!')
        state = 0
    else:
        if state != 1:
            print (hostname, 'is down!')
            state = 1

字符串

6tqwzwtp

6tqwzwtp2#

我不确定什么是True,但如果你在一个循环中,并且只想在第一次触发时做某件事,而不是随后的几次,那么你需要标记第一次与第二次。后续时间。例如,在while语句之前,初始化两个变量,例如first.true = 1和first.false = 1。在if语句中,只打印if first.true = 1,之后(但仍在if语句中),将其设置为0。这确保它只会在第一次到达那里时打印。在else语句中使用first.false也是如此。

0yg35tkg

0yg35tkg3#

你可以添加一个break语句来退出while循环,例如:

hostname = "google.com" #example
while True :
  response = os.system("ping -c 1 " + hostname + "> /dev/null")

#and then check the response...
  if response == 0:
    print (hostname, 'is up!')
    break
  else :
    print (hostname, 'is down!')
    break

字符串
但是,我不太理解你的问题,使用一个状态变量,就像在其他答案应该是可以的!!

jljoyd4f

jljoyd4f4#

您可以使用静态last_update字符串创建update函数。update函数不会将相同的输出打印两次。

def update(st):
    if not hasattr(update, "last_update"):
        update.last_update = ""
    if update.last_update != st:
        print(st)
        update.last_update = st

while True:
    hostname = "www.google.com"
    response = os.system("ping " + hostname)

    # and then check the response...
    if response == 0:
        update(f"{hostname} 'is up!")
    else:
        update(f"{hostname} 'is down!")

字符串

bkhjykvo

bkhjykvo5#

在下面的代码中,它不断地ping我的家庭服务器打印'down'只有一次,当它关闭和等待,当服务器是打印'up'只有一次,然后再次当服务器关闭它将打印(down)只有一次。

hostname = "172.16.0.96" #example

while True :
    while True :
        response = os.system("ping -c 1 " + hostname + "> /dev/null")
        if response != 0:
            print("down")
            break
    while True :
        response = os.system("ping -c 1 " + hostname + "> /dev/null")
        if response == 0:
            print("up")
            break

字符串

相关问题