Python 语言的 if 循环如何批量生成,在线向大神请教!

2020-02-07 11:44:43 +08:00
 suifengingo

本人在使用 python 语言进行 if 循环的代码编写中,需要多次写入 if 判断语句,而且每次的判断数字都是依次递增 1 的,人工手写起来太耗时了,而且出错的话不好回过头来检查是哪里出错,所以想向大神请教下,不知是否有批量生成这种语句的代码?在这里小生先谢谢了!真心希望能得到大神的回答

4412 次点击
所在节点    问与答
71 条回复
ipwx
2020-02-07 11:48:32 +08:00
啥意思,没看懂。能不能把原始需求说一下
jugelizi
2020-02-07 11:51:42 +08:00
难道
if(id==1)
...
if(id==2)
...

if(id==100)
这样的?
ClericPy
2020-02-07 11:52:34 +08:00
同一楼, 别拿自己判断的做法来求思路, 直接提原始需求可以避免走弯路
cassyfar
2020-02-07 11:52:48 +08:00
ctrl c ctrl v?
reus
2020-02-07 11:53:32 +08:00
说出你原本要解决的问题
suifengingo
2020-02-07 12:09:50 +08:00
首先谢谢各位大佬的热心解答,
正如二路所说的那样,这个 if 判断语句的需求就是类似于如下这样的:
if(id==1)
...
if(id==2)
...

if(id==100)
需要判断的数字远远多于 100,不知是否有批量生成这种循环语句的代码?再次谢谢大佬!
suifengingo
2020-02-07 12:10:46 +08:00
@ClericPy 首先谢谢大佬的热心解答,
正如二楼所说的那样,这个 if 判断语句的需求就是类似于如下这样的:
if(id==1)
...
if(id==2)
...

if(id==100)
需要判断的数字远远多于 100,不知是否有批量生成这种循环语句的代码?再次谢谢大佬!
suifengingo
2020-02-07 12:11:30 +08:00
@ipwx 首先谢谢大佬的热心解答,
这个 if 判断语句的需求就是类似于如下这样的:
if(id==1)
...
if(id==2)
...

if(id==100)
suifengingo
2020-02-07 12:14:41 +08:00
@cassyfar 可是它每次判断时候比较的数字是依次递增 1 的呀,复制粘贴的话还要再一次一次地人工去修改每个判断语句的数字,还是很麻烦
freed
2020-02-07 12:18:05 +08:00
循环...
reself
2020-02-07 12:20:04 +08:00
醉了。。。表驱动了解一下
keepeye
2020-02-07 12:30:43 +08:00
每个 if 块里的逻辑不一样?
lairdnote
2020-02-07 12:30:51 +08:00
map 难道不行?
hakono
2020-02-07 12:33:22 +08:00
你这,每个 id 不同的话,执行的代码逻辑都完全彻底不相同吗? 一般这种递增的判断逻辑,每个代码块要做的事情都是有共通部分的,要做的事情就是把那一块代码逻辑写成不同 id 都通用的代码就行了。如果代码逻辑是通用的还要一个个 if。。。。。。。。


如果 id 不同执行的操作完全不同的话,我不能理解的是楼主说的这句话的意思
“而且出错的话不好回过头来检查是哪里出错”
请说清楚是“什么”出错。是手贱代码写错把 id==100 写成 id == 1000 这种错误
还是代码执行逻辑中的错误

前者和你加多少个 if 的写法无关,也没法解决
后者你只需要做好打 log 和异常处理就解决了
无论是哪种问题都不出在这 if 的写法


对了,如果操作逻辑每个都不同的话,还有个方法倒是能提升点效率和易读性(几百个 elif 的代码执行下来的效率。。。)

建立个字典,id 做 key,要执行的逻辑的函数做 value

function func1(){
pass
}
function func2(){
pass
}
id_func_map = {
1: func1,
2: func2
}

要执行了,直接从 map 里使用 id_func_map.get(id,None) 取出来对应的函数调用执行,如果取出来的是 None,证明没有这个操作逻辑,抛错误
ispinfx
2020-02-07 12:34:43 +08:00
x y problem
andylsr
2020-02-07 12:36:22 +08:00
你都会 py 了,干嘛不写另一个 py 来生成这段代码呢
sunjiayao
2020-02-07 12:41:07 +08:00
很好奇是什么业务逻辑
nuistzhou
2020-02-07 12:41:16 +08:00
楼上说的表驱动没错
crella
2020-02-07 12:43:03 +08:00
excel 自动填充,虽然功能简陋,但是搭配 note Xpad2 的正则表达式 没什么做不到的
suifengingo
2020-02-07 12:43:23 +08:00
@hakono 谢谢您,这个每一块 if 语句代码的逻辑都是相同的,正如您所说的,是每个不同 id 都通用的代码,只是不知如何用计算机代替人工去批量生成 id 从 1 到上千数字的这些逻辑相同的 if 代码块,虚心向您请教

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/642737

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX