开发一个Python方法,对于24到1000范围内的任何整数,返回一个仅由数字5和7组成的列表,以便它们的和等于amount。例如,change(28)
可以返回[7, 7, 7, 7]
,而change(49)
可以返回[7, 7, 7, 7, 7, 7, 7]
或[5, 5, 5, 5, 5, 5, 5, 7, 7]
或[7, 5, 5, 5, 5, 5, 5, 5, 7]
我试过:
def change(amount):
if amount == 24:
return [5, 5, 7, 7]
change(24)
print (amount)
但是我认为有更有效的方法来做这个把戏。。有什么帮助吗?你知道吗
首先,代码中的第
print (amount)
行有一个错误,因为amount
没有在全局范围内定义,它只定义为change()
函数的局部参数。你应该改为写print(change(24))
。你知道吗其次,您的代码只管理输入量24,而不管理其他内容。你必须设计一个算法来处理任何输入的数字。使用Python,您可以直接找到一对数字(i,j),i*5+j*7==amount。您可以检查任何对值的相等性:例如,i从0到amount,j从0到amount。一旦找到了这个等式,就可以用5s和7s构建列表并返回。你知道吗
实际上在Python中:
for i in range(amount):
for j in range(amount):
if (i*5)+(j*7) == amount:
return [5]*i + [7]*j
显然,您必须学习Python的基础知识才能正确地使用它。你知道吗
for x in range(amount):
for y in range(amount):
if (x*5)+(y*7) == amount:
return [5]*x + [7]*y
代码应该大致如下所示:
如果您刚开始用Python编写代码,那么下面的代码就是为您构建的。也许它并不特别复杂,但对任何初学者来说都是可以理解的:
输出为:
相关问题 更多 >
编程相关推荐