老师,我这个为啥每次写入的yaml文件,的k值都是1了,我加了一个循环了。老师请教一下

老师,我这个为啥每次写入的yaml文件,的k值都是1了,我加了一个循环了。老师请教一下

import random
import os
import yaml

class email:
def email_mvp(self):
reuset=random.randint(100000,999999)
reuslt='@qq.com'
v_email=str(reuset)+reuslt
# print(v_email)
k_email=self.fenlei()
# print(k_email)
resuslts={
k_email:v_email
}
print(resuslts)
return resuslts


def fenlei(self):

with open("email.yaml",'r') as f:
data=f.read()
reuslt=yaml.load(data,Loader=yaml.FullLoader)
print(reuslt,'+++++')
li=len(reuslt)
print(type(li))
for i in range(li):
y=i+1
print(y,'=======')
return y
def mingcheng(self):
with open("email.yaml",'a',encoding='utf-8') as f:
yaml.dump(self.email_mvp(),f)


if __name__=='__main__':
Em=email()
#for i in range(1):
Em.mingcheng()


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!

因为以上代码的循环只是循环了range(li)次,临时变量i从0开始累加每次加1,如range(li=5)循环了5次,则i=4,y=4+1,返回的y值依然是5次,不会增加

修改方法:直接对变量li进行加1,返回li,如下图:

https://img1.sycdn.imooc.com//climg/614dabd609c2c8e606420325.jpg

祝学习愉快!

  • 热爱编程学习 提问者 #1
    print(reuslt,'+++++')
    li=len(reuslt)
    print(type(li))
    for i in range(li):

    老师,我这给li传的参数是,reuslt的长度,循环次数是reuslt长度才对?可是为啥循环的此时是0呢?不太理解呢



    2021-09-24 18:54:05
  • 同学,你好!li的值是result的长度,for...range(li)循环是从0取值,第一次循环,i的值是0,同学在for循环中使用了return语句,程序遇到return语句就停止运行,for只执行了一次就停止了,可将return语句放在for循环外面。假如result的长度是5,那么最后一次循环y的值是5,全部循环之后再将y的值返回

    https://img1.sycdn.imooc.com//climg/614ea3fe09dd15c207940716.jpg

    祝:学习愉快!

    2021-09-25 12:29:11
  • 好的,谢谢解答

    2021-09-25 17:32:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师