Python 3: оператор `else` выполняется, даже если оператор` if` был истинным - PullRequest
0 голосов
/ 20 декабря 2018

Согласно предыдущему вопросу В другом выражении, выполняющем даже оператор IF, TRUE было предложено проверить отступ.Отступ, кажется, правильный в моем коде.В чем проблема?

Согласно https://www.tutorialspoint.com/python/python_if_else.htm

Оператор else можно комбинировать с оператором if.Оператор else содержит блок кода, который выполняется, если условное выражение в операторе if принимает значение 0 или значение FALSE.

Насколько я понимаю, else не должен выполняться, если if оператор верен / True.

Однако в этом коде ... 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 голосов
/ 20 декабря 2018

Вам, вероятно, нужно использовать 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")
...