嵌套If Else实现四变量升序排序:代码能否精简及更优方案
嵌套If-Else实现四变量排序的精简方案
你的代码可以大幅精简,首先里面大量空的print()语句完全没有作用,直接删掉就能让逻辑紧凑很多。另外,原代码的嵌套逻辑本身可行,但可以去掉冗余空行和无意义操作,精简后的嵌套If-Else代码如下:
a=19 b=10 c=1 d=8 if a > b: if a > c: if a > d: # a为最大值 if b > c: print("a>b>c>d" if c > d else "a>b>d>c") else: print("a>c>b>d" if b > d else "a>c>d>b") else: # d为最大值,a次之 print("d>a>b>c" if b > c else "d>a>c>b") else: # c为最大值 if a > d: print("c>a>d>b" if d > b else "c>a>b>d") else: print("c>d>a>b" if c > d else "d>c>a>b") else: if b > c: if b > d: # b为最大值 if a > c: print("b>a>c>d" if c > d else "b>a>d>c") else: print("b>c>a>d" if a > d else "b>c>d>a") else: # d为最大值,b次之 print("d>b>c>a" if c > a else "d>b>a>c") else: # c为最大值,b次之 if c > d: print("c>b>a>d" if a > d else "c>b>d>a") else: print("d>c>b>a")
这里还把内层嵌套If-Else改成了三元表达式,进一步压缩了代码行数,同时保留原有逻辑。
如果不限制必须用嵌套If-Else,有两种更简便的实现方式:
- 利用Python内置排序函数
这是最简洁的方案,一行代码就能完成排序并输出指定格式:
a=19 b=10 c=1 d=8 # 升序排列后反转成降序,拼接成字符串(对应你原代码的输出格式) print(">".join(map(str, sorted([a, b, c, d], reverse=True)))) # 如果要输出升序格式,去掉reverse=True即可 # print(">".join(map(str, sorted([a, b, c, d]))))
- 平级判断所有排列组合
如果一定要用条件判断,也可以把4个变量的24种全排列用elif逐个判断,这种方式没有嵌套,逻辑更直观,但代码行数会较多,示例如下:
a=19 b=10 c=1 d=8 if a>b>c>d: print("a>b>c>d") elif a>b>d>c: print("a>b>d>c") elif a>c>b>d: print("a>c>b>d") elif a>c>d>b: print("a>c>d>b") # ... 依次补充剩余20种排列的判断
内容的提问来源于stack exchange,提问作者buzz shocker
相关产品推荐
相关产品推荐

