问题描述
所以我的代码有很多if语句:
rnrp += 1
if a100 == b100:
rnrp += 1
if a10 == b10:
rnrp += 1
if a1 == b1:
rnrp += 1
和:
if b1000 == a100:
rnwp += 1
break
if b1000 == a10:
rnwp += 1
break
if b1000 == a1:
rnwp += 1
break
while true:
if b100 == a1000:
rnwp += 1
break
if b100 == a10:
rnwp += 1
break
if b100 == a1:
rnwp += 1
break
while true:
if b10 == a1000:
rnwp += 1
break
if b10 == a100:
rnwp += 1
break
if b10 == a1:
rnwp += 1
break
while true:
if b1 == a1000:
rnwp += 1
break
if b1 == a100:
rnwp += 1
break
if b1 == a10:
rnwp += 1
break
如您所见,这是很多if语句,第一个很好,但是第二个需要改进。同样,第二个代码试图完成的是检查b的每个位置(100的位置,100的位置,10的位置等。)是否匹配a的任何位置。 如何缩小代码第二部分中if语句的数量? 该帖子已由jasonharper回答(我目前无法找到该按钮,因此我只想输入它在问题中)谢谢!
解决方法
您可以使用p
或list
之类的集合来减少操作数量。例如,
dict
可能是
while true:
if b100 == a1000:
rnwp += 1
break
if b100 == a10:
rnwp += 1
break
if b100 == a1:
rnwp += 1
break
由于您经常重复其中一些模式,因此您可以事先制作一些列表并重复使用它们。甚至可以使用字典来代替,这样就不必分别记住变量。
,使用elif语句。除此之外,您可以在那里做更多的事情。使用许多if语句可能会造成混淆,但是只要您的代码是干净的,就可以将其删除。
,我将其缩短的方式:
Boolean_value = True
while Boolean_value:
if b100 == a1000: rnwp,Boolean_value = rnwp + 1,False
if b100 == a10: rnwp,False
if b100 == a1: rnwp,False
如果要使用if语句,而if语句仅具有一个表达式,这将非常有用。 您也可以在一行中更改多个值。
,您可以使用 itertools 中的 product 并在一行中完成所有操作:
from itertools import product
rnwp += sum(b==a for b,a in product([b1000,b100,b10,b1],[a1000,a100,a10,a1]))