运行Python 3.6.5
我是python的新手。当我在终端中分别运行这些行时,我得到的正是我想要的。当我运行python文件时,输入提示“理想重量?”我提交号码后不会结束。它不断重复“理想的重量?”。我正在尝试从“权重”集中找到数字的组合,这些组合将总结为用户输入。
import itertools
weights = [3, 3, 7.5, 7.5, 10]
weightint = int(input('ideal weight? '))
result = [seq for i in range(len(weights), 0, -1) for seq in itertools.combinations(weights, i) if sum(seq) == weightint]
print(result)
有人可以帮忙解释我在做什么错。谢谢!
答案 0 :(得分:1)
不确定您的终端出了什么问题。考虑使用argparse
代替input
:
import itertools
import argparse
MY_WEIGHTS = [3, 3, 7.5, 7.5, 10]
def find_weight(w):
result = [seq for i in range(len(MY_WEIGHTS), 0, -1) for seq in itertools.combinations(MY_WEIGHTS, i) if sum(seq) == w]
return result
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-w', '--weight', required=True, type=int, help='The weight')
args = parser.parse_args()
result = find_weight(args.weight)
print('result: {}'.format(result))
if __name__ == '__main__':
main()
然后从命令行使用--weight
或-w
调用它:
python3 ./weight.py --weight 10
result: [(10,)]