实验要求我输入一串”1,2,3,4,5“并用列表储存:
对于单位数字,我一开始是这样实现的
for i in x:
if i == ',':contiue
sum += int(i)
count += 1
print(sum/count)
但是当数字是俩位以上时,input的字符串’12,12‘在列表的存储格式为”‘1’,‘2’,‘,’,‘1’,‘2’“,代码就会失效,认为个位数与十位数是俩个数字。但是直接暴力破解还需要一个循环统计数字的个数来进行位数**10*i的计算。于是我想到数据结构中的栈,如果将数字一个个压入再弹出的话,可以从个位数开始进行计算,再进一步我想到字符串的.reverse()将字符串反转后有一样的效果于是就有了
count1 = 0 #sum
count2 = 1 #个数计数器,最后缺少一个逗号所以+1
count3 = 0 #位数计数器
try :
x = list(input("输入逗号分割的一系列数字:"))
x.reverse() #反转函数
for i in x:
if i == ',':
count3 = 0 #重置位数计数器
count2 += 1
continue
count1 += int(i)*10**count3
count3 += 1
print(count1/count2)
except ZeroDivisionError:
print('列表是空的,请添加新数据')
我在其他博客上发现可以使用split函数提供逗号作为分隔符将字符串输入列表,想知道split的底层实现是如何做到的翻看python的文档看不懂想问一下大佬们有没有通俗的解释