Python 3:即使if语句为true也会执行else语句

时间:2018-12-20 07:31:46

标签: python python-3.x windows argparse

根据先前的问题Else statement executing even the IF statement is TRUE,提供的建议是检查缩进。缩进在我的代码中似乎是正确的。似乎是什么问题?

根据https://www.tutorialspoint.com/python/python_if_else.htm

  

else语句可以与if语句结合使用。另一个   语句包含在有条件的情况下执行的代码块   if语句中的表达式解析为0或FALSE值。

根据我的理解,如果else语句正确/正确,则不应执行if

但是,在此代码中,else语句仍被执行..请参见python myCode.py -i 8.8.8.8

C:\Python>python myCode.py
No Argument Provided


C:\Python>python myCode.py -h
usage: myCode.py [-h] [-u URL] [-i IP]

optional arguments:
  -h, --help         show this help message and exit
  -u URL, --url URL  Uniform Resource Locator
  -i IP, --ip IP     IP Address


C:\Python>python myCode.py -u google.com
~ URL is google.com


C:\Python>python myCode.py -i 8.8.8.8
~ IP Address is 8.8.8.8
No Argument Provided

C:\Python>

这是代码。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-u', '--url',
    help='Uniform Resource Locator' )

parser.add_argument('-i', '--ip',
    help='IP Address' )

args = parser.parse_args()

if args.ip:
    print("~ IP Address is " + args.ip)
if args.url:
    print("~ URL is " + args.url)
else:
    print("No Argument Provided")

请让我知道这里出了什么问题。 No Argument Provided不应该在那里。

C:\Python>python myCode.py -i 8.8.8.8
~ IP Address is 8.8.8.8
No Argument Provided

1 个答案:

答案 0 :(得分:7)

您可能需要使用elif。您的情况下的else被执行,因为args.url为空。

例如:

if args.ip:
    print("~ IP Address is " + args.ip)
elif args.url:
    print("~ URL is " + args.url)
else:
    print("No Argument Provided")