用户:
一只敲代码的华南虎查看:1 回复:1 评论:1 创建时间:2022-06-27T21:45:04
如果要转发请标注:原作者华南虎
# 原作者华南虎
print('原作者华南虎')
h = [] #解法列表
fh = ['+', '-', '*', '/'] #运算符号
def ys(a, f, b): #计算的函数
if f == '+':
return a+b
elif f == '-':
return a-b
elif f == '*':
return a*b
elif f == '/':
if b == 0:
return 0
else:
return a/b
a = input('请你输入24点的4个数字(用 英文“,” 隔开):').split(',') #获取24点的4个数
if len(a) != 4: #判断是否有4个数
print('你输入的有问题')
exit() #结束程序
for i in a: #遍历4个数获取i
b = a[:]
b.remove(i) #获取除了i的3个数
for j in b: #遍历3个数获取j
#到这里我们就获得了i和j两个数字
for f in fh: #这个循环是把i和j加减乘除全部算一遍
c = b[:]
c1 = ys(float(i), f, float(j))
c.append(c1)
c.remove(j)
#现在我就把4个数变成了3个数
for i1 in c: #重复上面的操作
d = c[:]
d.remove(i1)
for j1 in d:
for f1 in fh:
e = d[:]
e1 = ys(float(i1), f1, float(j1))
e.append(e1)
e.remove(j1)
#现在剩2个数
if len(e) == 2:
for k in [1, 2]: #两种运算方式,1是正着,2是倒着
for f2 in fh:
if k == 1:
#正着运算两个数
g = ys(float(e[0]), f2, float(e[1]))
g1 = str(i)+f+str(j)+'='+str(c1), '→', str(i1)+f1+str(
j1)+'='+str(e1), '→', str(e[0])+f2+str(e[1])+'='+str(g)
elif k == 2:
#倒着运算两个数
g = ys(float(e[1]), f2, float(e[0]))
g1 = str(i)+f+str(j)+'='+str(c1), '→', str(i1)+f1+str(
j1)+'='+str(e1), '→', str(e[1])+f2+str(e[0])+'='+str(g)
if float(g) == 23.99999999999999:
#因为电脑是把1/3算成1÷3=0.33333333333333所以23.99999999999999就是24
g = 24
if float(g) == 24.0 and g1 not in h: #判断是否等于24
h.append(g1) #添加到解法列表
# 打印出来
if k == 1:
print(str(i)+f+str(j)+'='+str(c1), '→', str(i1)+f1+str(
j1)+'='+str(e1), '→', str(e[0])+f2+str(e[1])+'='+str(g))
elif k == 2:
print(str(i)+f+str(j)+'='+str(c1), '→', str(i1)+f1+str(
j1)+'='+str(e1), '→', str(e[1])+f2+str(e[0])+'='+str(g))
if len(h) == 0: #如果一个解法都没有
print('这道题无解')
制作不易,支持一下吧