题解 | #24点运算 暴力遍历 跳出双层循环
24点运算
https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d
# 算式的运算顺序从左至右,不包含括号, # 左边的运算优先,不用括号表示优先级 while 1: try: s=input().split() #print(s) r=['','A','2','3','4','5','6','7','8','9','10','J','Q','K'] sym=['+','-','*','/'] for i in s: if i=='joker' or i=='JOKER': print('ERROR') break else: # 4张牌 全排列 s_l=[] for i in range(4): s1=s[:i]+s[i+1:] for j in range(3): s2=s1[:j]+s1[j+1:] for k in range(2): s3=s2[:k]+s2[k+1:] s_rank=[s[i],s1[j],s2[k],s3[0]] s_l.append(s_rank) #print(len(s_l)) #print(s_l) # 4个符号任选3个排序,可重复 sym_l=[] for i in sym: for j in sym: for k in sym: sym_i=[i,j,k] sym_l.append(sym_i) #print(len(sym_l)) #print(sym_l) # 每种 s_l 与每种 sym_l 组合成新字符串,再eval for i in s_l: for j in sym_l: eval1=eval(str(r.index(i[0]))) eval2=eval(str(eval1)+j[0]+str(r.index(i[1]))) eval3=eval(str(eval2)+j[1]+str(r.index(i[2]))) eval4=eval(str(eval3)+j[2]+str(r.index(i[3]))) #print(eval4) if eval4==24: #print(eval4) print(i[0]+j[0]+i[1]+j[1]+i[2]+j[2]+i[3]) break #跳出内层循环 else: continue break #跳出外层循环 else: print('NONE') except: break
跳出双层循环:
for i in s1:
for j in s2:
if ....:
break
else:
continue
break