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

Python 如何使If语句和for循环对空变量起作用,python,if-statement,for-loop,undefined,Python,If Statement,For Loop,Undefined,我的python脚本名为dlimage。我想要组合一个if语句和一个for循环。在终端中,我希望能够键入python dlimage 1 2 3,它将只下载1幅图像。否则,如果num3的变量为空,并且我键入python dlimage 1 2,它将使用for循环为范围(01,50):内的num3下载50个图像 运行python dlimage 1 2时出错: Traceback (most recent call last): File "dlimage.py", line 4, in &l

我的python脚本名为
dlimage
。我想要组合一个if语句和一个for循环。在终端中,我希望能够键入
python dlimage 1 2 3
,它将只下载1幅图像。否则,如果num3的变量为空,并且我键入
python dlimage 1 2
,它将使用for循环
为范围(01,50):
内的num3下载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

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

不应该是这样吗

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未在代码中定义,但您可以使用
进行检查,如果不是num3:
。然后您使用
num3
作为for循环中的变量-对我来说没有任何意义

首先,在定义num3之前,您使用的是num3。 其次,每次进入循环时都要重新定义一个函数,在else块中,这似乎毫无意义(?)
for循环中与else部分相同的所有内容实际上都应该在if语句之前,除了下载\u web\u image的调用

此程序中执行的第一行是
if not num3
<此时未定义代码>num3。因此出现了错误。我真的不知道你在这里还期待什么。将它的默认值设置为一些东西,可能是
None
?你的解析器块
parser=argparse.ArgumentParser()
直到
args=parser.parse\u args()
必须在调用
之前,如果不是num3:
,我想,如果不是args.num3,它必须类似于
。不是吗?对不起,在昨天之前我对python一无所知(我知道,这不是一个很好的借口)。我基本上想制作一个python版本的bash脚本,我在上面发布了这个脚本。更新了我的代码,没有调试/测试。尝试一下,然后自己修复错误:)问题似乎是
错误:参数太少
现在这个异常来自
argparse
?使用
解析器尝试。添加参数('num3',nargs='?',默认值=None)
(而不是
解析器。添加参数(“num3”)
)@JohnP如果您使用该语言不到一天,您应该阅读教程和指南,而不是张贴问题。你所面临的挑战可以用最少的独立研究来回答。这相当于问一个读书俱乐部一本书的结局如何,因为你还没有读过。
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))