Python 如何使If语句和for循环对空变量起作用
我的python脚本名为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
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))