2017年10月6日 星期五

[Python練習]解方程式 (Python 程式設計入門-金融實務管理案例第二版 5-6)

假設有 N 元,現在要到市場買 x 條香蕉,y 個橘子,z 個蘋果,x、y、z 皆大於 0,且 x 是 5 的倍數,y 是 3 的倍數,z 是偶數。

已知香蕉 1 條 5 元,橘子 1 個 6 元,蘋果 1 個 10 元,至少要花掉 100 元,請列出所有可能的水果組合。

輸入 N (100 <= N <= 1000)

由小到大一律輸出 x,y,z 所有可能的組合,x,y,z 之間以一個空白字元隔開,且每一種組合結尾必須跳列。如果沒有答案,則輸出 No Solution。

===================================================================
N = input("Please input N: ")
try:
    N = int(N)
except ValueError:
    print("please input a number (100~1000)")
else:
    if N < 100 or N > 1000:
        exit("100 < N < 1000")
    else:
        paraX = 5
        paraY = 3
        paraZ = 2
        result = []
        for x in range(0, N, paraX):
            for y in range(0, N - paraX * x, paraY):
                for z in range(0, N - paraY * y, paraZ):
                    if (5 * x + 6 * y + 10 * z) == N \
                            and x > 0 and y > 0  and z > 0:
                        tmp = [x, y, z]
                        result.append(tmp)
        if len(result) == 0:
            exit('No Solution')
        for r in result:
            print('x=%d y=%d z=%d' %(r[0], r[1], r[2]))
===================================================================
執行結果:
Please input N: 300
x=10 y=15 z=16
x=20 y=30 z=2
x=30 y=15 z=6

Please input N: 102
No Solution

沒有留言:

張貼留言