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