python 3 : `else` statement get executed even `if` statement was true

标签 python python-3.x windows argparse

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

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

An else statement can be combined with an if statement. An else statement contains the block of code that executes if the conditional expression in the if statement resolves to 0 or a FALSE value.

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

但是,在这段代码中...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

最佳答案

您可能需要使用 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")

关于 python 3 : `else` statement get executed even `if` statement was true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53864192/

相关文章:

我可以阻止我的程序的用户调整控制台窗口的大小吗? (在 C 中)

c# - 如何更改 .NET PropertyGrid 中使用的控件类型

python - 在 Atom IDE 中将键盘快捷键更改为 "Run Script"

python - 如何在Python中打开一个已经打开的文件?

python - 在 Python 中创建不可变对象(immutable对象)

Python 位列表到字节列表

python - Scapyd 从 .egg 文件中引发 NotADirectoryError

Python3如何安装.ttf字体文件?

python - 仅使用 NumPy einsum 处理上三角元素

python - TypeError: object.__new__() 使用继承时不带参数