前言:
当前看官们对“菜鸟python”大概比较关注,我们都需要了解一些“菜鸟python”的相关资讯。那么小编在网摘上网罗了一些关于“菜鸟python””的相关文章,希望小伙伴们能喜欢,同学们一起来学习一下吧!1、题目
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?
2、算法
打算采用枚举法。
3、python程序
i=int(100/5)
j=int(100/3)
k=int(300)
a=[]
re=0
for i in range(i):
for j in range(j):
for k in range(k):
re=re+1
A1=i+j+k
A2=i*5+j*3+k/3
if A1==100:
if A2==100:
a.append([i,j,k])
print(a,re)
输出:
[[0, 25, 75], [4, 18, 78]] 45150
4、错误查找
答案是对,但是好像不对劲。
为什么,i=20,j=33,k=300,循环次数应该是,I*J*K=198000次,但是只循环了45150次。
问题出在哪里?
问题之一是在使用range()函数迭代时,使用了与变量i,j,k相同的名称作为迭代变量i,j,k。在Python中,嵌套的循环中,使用相同的变量名会导致变量的值被覆盖,从而导致意外行为。因此需要更改嵌套循环的迭代变量名称以避免冲突。
5、修改代码
将变量i,j,k修改为i1,j1,k1,修改后的代码:
i1=int(100/5)
j1=int(100/3)
k1=int(300)
a=[]
re=0
for i in range(i1): # 使用不同的变量名进行迭代
for j in range(j1):
for k in range(k1):
re=re+1
A1=i+j+k
A2=i*5+j*3+k/3
if A1==100:
if A2==100:
a.append([i,j,k])
print(a,re)
运行结果:
[[0, 25, 75], [4, 18, 78], [8, 11, 81], [12, 4, 84]] 198000
问题解决。
注:预览的时候发现代码前的空格没了,不知道咋回事,知道怎么解决的请留言!
标签: #菜鸟python