如何使 If 语句和 for 循环对空变量起作用

how to make If statement and for loop work for an empty variable

我的 python 脚本名为 dlimage。我想结合一个 if 语句和一个 for 循环。在终端中,我希望能够输入 python dlimage 1 2 3 并且它只会下载 1 张图像。否则,如果 num3 的变量为空并且我键入 python dlimage 1 2 它将使用 for 循环 for num3 in range(01,50):.

下载 50 张图像

我运行python dlimage 1 2时的错误:

Traceback (most recent call last):
  File "dlimage.py", line 4, in <module>
    if not num3:
NameError: name 'num3' is undefined

我该如何定义它,因为 num3 已经在解析器中并且 url 下面?我也不完全确定我的代码是否正确。这里有什么问题?

我的代码:

import urllib
import argparse

if not num3:
    for num3 in range(01,50):

        def download_web_image(url):
            IMAGE = url.rsplit('/',1)[1]
            urllib.urlretrieve(url, IMAGE)

        parser = argparse.ArgumentParser()
        parser.add_argument("num1")
        parser.add_argument("num2")
        parser.add_argument("num3")
        args = parser.parse_args()

        download_web_image("https://www.example.com/{num1}/{num2}/{num3}.jpg".format(num1=args.num1, num2=args.num2, num3=args.num3))

else:

    def download_web_image(url):
        IMAGE = url.rsplit('/',1)[1]
        urllib.urlretrieve(url, IMAGE)

    parser = argparse.ArgumentParser()
    parser.add_argument("num1")
    parser.add_argument("num2")
    parser.add_argument("num3")
    args = parser.parse_args()

    download_web_image("https://www.example.com/{num1}/{num2}/{num3}.jpg".format(num1=args.num1, num2=args.num2, num3=args.num3))

更新:它现在正在工作。感谢你的帮助。

不应该是这样吗?

import urllib
import argparse

def download_web_image(url):
    IMAGE = url.rsplit('/',1)[1]
    urllib.urlretrieve(url, IMAGE)

parser = argparse.ArgumentParser()
parser.add_argument("num1")
parser.add_argument("num2")
parser.add_argument("num3")
args = parser.parse_args()

num3 = args.num3

if not num3:
    for num3 in range(01,50):
        download_web_image("https://www.example.com/{num1}/{num2}/{num3}.jpg".format(num1=args.num1, num2=args.num2, num3=num3))
else:
    download_web_image("https://www.example.com/{num1}/{num2}/{num3}.jpg".format(num1=args.num1, num2=args.num2, num3=num3))

你的完整代码是(抱歉)一团糟..首先你必须在使用它们之前定义变量。 num3 未在您的代码中定义,但您使用 if not num3: 检查。然后你在 for 循环中使用 num3 作为变量 - 对我来说没有任何意义

首先你在定义它之前使用了 num 3。 其次,每次进入循环时,您都在重新定义一个函数,并且在您的 else 块中,这似乎毫无意义(?) for 循环中与 else 部分相同的所有内容都应该在 if 语句之前,除了对 download_web_image

的调用