|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
程序目标:传送门 小甲鱼Python课后作业动动手第0题
我的程序:
文字版:- #以上一长串为string1
- #利用刚学的闭包函数,再用a()连续读取出每一个字符
- def yihao():
- i = 0
- def erhao():
- nonlocal i
- result = string1[i]
- i += 1
- return result
- return erhao
- a = yihao()
- #先设置好变量,列表
- t = 0
- zifu = []
- cishu = []
- #利用while循环,把所有的字符列成一个列表:zifu
- #再把字符出现的次数列成一个列表:cishu
- while t < len(string1):
- if a() not in zifu:
- zifu.append(string1[t])
- cishu.append(string1.count(a()))
- t += 1
- #利用for循环,打印出结果
- for each in zifu:
- print(each,'一共出现了',cishu[zifu.index(each)],'次')
复制代码
报错内容:
错误原因:在第22行和第24行分别执行了 a() ,相当于每次 while 循环,a() 执行了两次,也就是跳过两个字符,所以 while 循环执行到一半的时候,a()就已经达到 string1 的结尾了
帮你把 while 这里修改了,下面这种写法是3.8以前的版本写法。3.8版本之后出现了 海象赋值(:=),也就是2楼所写的那样,就可以少写一行了。
- while t < len(string1):
- temp=a()
- if temp not in zifu:
- zifu.append(string1[t])
- cishu.append(string1.count(temp))
- t += 1
复制代码
|
|