python如何写如下循环?

已知(A例:表示循环次数; A_1例表示数值)
A例 A_1例
a=30 ; a_1=0.45
b=31 ; b_1=0.43548
c=32 ; c_1=0.43
d=33 ; d_1=0.42
e=34 ; e_1=0.41
f=35; f_1=0.40
g=36 ; g_1=0.39
h=37 ; h_1=0.38

例: 当a循环到23次时,a_1相加大于等于10(10.35),再减去10,为0.35,然后开始循环b,并a_-1与b-1相加;a循环到30次后结束相加结果为6.19839,b继续循环到16次后相加结果等于或大于10(10.11774 ),得到的结果再减去10为0.11774,再开始C循环,以此类推
求出每次为10的循环次数及值的大小

<pre>
da =[
['a',30,0.45],
['b',31,0.43548],
['c',32, 0.43],
['d',33, 0.42],
['e',34, 0.41],
['f',35, 0.40],
['g',36, 0.39],
['h',37, 0.38]
]
li = [] # 存放符合条件的数
lp = [] # 正参与循环的数
total = 0.0 # 求和
no = 0 # 总循环次数
i,ln = 0,len(da)
while True:
if i < ln: # 加入循环
lp +=[da[i]]
print('{}次后{}参入循环!'.format(no,da[i][0]))
i += 1
while lp:
no += 1
for j in range(len(lp)-1,-1,-1):
total += lp[j][2]
lp[j][1] -= 1
if lp [j][1] == 0:
print('{}次后,{}循环结束!'.format(no,lp[j][0]))
del lp[j]
if total >= 10:
li += [[no,round(total-10,5)]]
total = 0
break
if i==ln and lp == []:
print('最后值为:{}'.format(total))
break
print('\n符合条件的值有{}个,他们如下:\n'.format(len(li)),'*'*40)
for i in range(len(li)):
print(li[i][0],'次循环后,符合条件,其和为:',10+li[i][1],' ,减10后为:',li[i][1])
</pre>追问

谢谢,刚弄了好久,没有成功,是不是我的箱套出了问题,

追答

我上面的代码,是可以运行的。python 3.9 或3.10,你报什么错?好了没有?

追问

没有成功,但还是谢谢您,毕竟思路是对的,慢慢研究

追答

#你上面图片倒数第五行,不对
# 你用下面的代码试试,将前面的#号,换成空格。
da =[
########['a',30,0.45],
########['b',31,0.43548],
########['c',32, 0.43],
########['d',33, 0.42],
########['e',34, 0.41],
########['f',35, 0.40],
########['g',36, 0.39],
########['h',37, 0.38]
####]
li = [] # 存放符合条件的数
lp = [] # 正参与循环的数
total = 0.0 # 求和
no = 0 # 总循环次数
i,ln = 0,len(da)
while True:
####if i = 10:
############li += [[no,round(total-10,5)]]
############total = 0
############break
####if i==ln and lp == []:
########print('最后值为:{}'.format(total))
########break
print('\n符合条件的值有{}个,他们如下:\n'.format(len(li)),'-'*50)####

st = [[da[0][0],0]]
for i in range(1,ln):
####st +=[[da[i][0],li[i-1][0]]]
for i in range(len(li)):
####for j in range(ln):
########if st[j][1] >= li[i][0]:
############break
########elif i>0 and st[j][1]+da[j][1] < li[i-1][0] :
############continue
########print('{}循环到{}次,'.format(st[j][0],min(da[j][1],li[i][0]-st[j][1])),end='')
####print('总循环{}次后,符合条件值为:{}'.format(*li[i]))

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-04-08
用条件函数进行写函数,如while for等语句
第2个回答  2022-04-08
那就用条件函数
相似回答