一个简单的python问题需要解答

有一更长度为n(单位:m)的钢筋,需要截成69cm,39cm,29cm.三种规格的材料,在三种规格至少截一段的情况下,如何截取才能使余下的材料最少?n由用户来输入。

既然是简单方法, 那就全部遍历好了。

n = float(input("材料长度"))
w = [0.69,0.39,0.29]
x = [int(n/m) for m in w]
# print(x)
less = n
r = [0,0,0]
for i0 in range(0, x[0]+1):
    for i1 in range(0, x[1] + 1):
        for i2 in range(0, x[2] + 1):
            temp = round(n - i0 * w[0] - i1 * w[1] - i2 * w[2],2)
            if temp < 0:
                continue
            if temp < less:
                less = temp
                r = [i0,i1,i2]
                # print('新最优解', less, r)

print('最优解:剩余', less, )
for i in range(3):
    print('截',w[i],'cm  ',r[i],'段')


n = int(input())
res = n-69-39-29
ri = 1
rj = 1
rk = 1
for i in range(1, n//69):
    for j in range(1, n//39):
        for k in range(1, n//29):
            slen = i*69+j*39+k*29
            if slen > n:
                break
            else:
                if n - slen < res:
                    res = n-slen
                    ri,rj,rk = i,j,k
print("69cm截取%d段"%ri)
print("39cm截取%d段"%rj)
print("29cm截取%d段"%rk)