我需要检查看起来像这样的变量:
if name1 != "":
(do something)
“name”之后的数字在1到10之间递增。
我是否需要编写测试十次,或者是否有一种方法(不使用数组或字典)来“连接”,可以这么说,变量名称?
我正在考虑这样的事情:
for i in range(10):
if "name" + str(i) != "":
(do something)
编辑:我无法使用列表,因为我实际上是在尝试解析Flask WTF表单中的结果,其结果是这样检索的:
print(form.name1.data)
print(form.name2.data)
print(form.name3.data)
etc.
答案 0 :(得分:4)
使用列表,例如:
names = ['bob', 'alice', 'john']
然后迭代列表:
for n in names:
if n != "":
(do something)
或者您可以使用复合if语句:
if (name1 != "" or name2 != "" or name3 != "")
最好的解决方案是使用解决方案#1。
答案 1 :(得分:2)
如果您无法使用列表或词典,则可以使用for i in range(10):
if eval("name" + str(i)) != "":
(do something)
Request.Url.Scheme + "://" + Request.Url.Host + Request.RawUrl
答案 2 :(得分:0)
首先,您的应用具有无效逻辑。你应该使用list,dict或你的自定义obj。
你可以在全局变量中获得所有变量。 Globals是一个词典。
你可以做下一个:
for i in range(10):
if globals().get('name%d' % i):
# do something