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

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

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

4446 次点击
所在节点    问与答
71 条回复
ma6254
2020-02-07 12:54:55 +08:00
你还是没有说明白原需求
14 楼说的没错,表驱动是正解
这样不复杂的业务逻辑没必要上 AST 生成
suifengingo
2020-02-07 12:55:29 +08:00
@andylsr 的确是这么想的,可是能力不足,不知道如何用 python 来批量写出这种自增的 if 循环语句,所以虚心向大佬请教
suifengingo
2020-02-07 12:59:53 +08:00
要实现的 if 判断语句的需求是如下这样的:
if(id==1)
n + 1;
if(id==2)
n+2;
...
if(id==1000)
n+1000
想要通过计算机来批量生成这些 id 依次增加 1 的 if 判断语句
Sylv
2020-02-07 13:00:13 +08:00
while/for 循环学习一下
suifengingo
2020-02-07 13:00:26 +08:00
@ma6254 谢谢您,想要实现的 if 判断语句的需求是如下这样的:
if(id==1)
n + 1;
if(id==2)
n+2;
...
if(id==1000)
n+1000
想要通过计算机来批量生成这些 id 依次增加 1 的 if 判断语句
ho121
2020-02-07 13:02:34 +08:00
@suifengingo
n+id 不就好了?
allenloong
2020-02-07 13:04:54 +08:00
“批量生成这种语句的代码”,"数字都是依次递增 1 的"-把这些数字提前存起来
“每一块 if 语句代码的逻辑都是相同的”-拿到一个数字然后看看这个数字在不在
TangMonk
2020-02-07 13:06:06 +08:00
这个时候就需要 Ruby 的元编程了
wysnylc
2020-02-07 13:06:17 +08:00
1,双重循环
2,map 循环
jmc891205
2020-02-07 13:18:08 +08:00
for id in range(1, 1001)
....n = n + id
ayase252
2020-02-07 13:26:02 +08:00
我很好奇的是为什么有这种逻辑,难道针对 1000 种 case 有 1000 种完全不同的处理方法?
webshe11
2020-02-07 13:29:51 +08:00
楼主还是没有说清原始需求,只说了自己想出来的解决方法。根据“这个每一块 if 语句代码的逻辑都是相同的”猜测用 for 循环就可以了
Juszoe
2020-02-07 13:31:06 +08:00
if id >= 1 and id <= 1000:
n + id

一样的逻辑为什么要那么多 if
binux
2020-02-07 13:32:46 +08:00
if id in [1, 2, 3, 4]
henryhu
2020-02-07 13:33:44 +08:00
如果有 1000 个 case,每个 case 的处理都不一样,那么,写 case 里的处理所花的时间远远大于写 copy/paste and edit case 条件的时间,为啥会在意这一点点时间?

如果 case 处理都是类似的话,我相信有更好的处理方式,而不是简单重复代码。
jiezhi
2020-02-07 13:35:24 +08:00
vim 宏
hxse
2020-02-07 14:16:02 +08:00
为啥不直接 n+id
ClericPy
2020-02-07 14:49:24 +08:00
我如果没有理解错的话, 这个的需求是... 生成代码, 而不是拿到代码的执行结果...

https://paste.ubuntu.com/p/TVWrjgYfpq/ 虽然感觉这样生成代码挺没有意义的

PS: 题外话, 如果拿结果, 一个函数甚至是 lambda 函数就够了, operate = lambda id, n: id+n. 上面表驱动什么的说的都不像是讲生成代码的...
fool079
2020-02-07 15:14:00 +08:00
看了 lz 的需求,表驱动完全可以满足,建议学习一下
Baymaxbowen
2020-02-07 15:18:18 +08:00
最蠢的办法不就是自动生成代码吗

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

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

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

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

© 2021 V2EX