这个地方last为啥+1才是正确结果啊 不是从0开始算吗
def edg(x):english=0
number=0
block=0
others=0
length=len(x)
last=length-1
str1=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
str2=['0','1','2','3','4','5','6','7','8','9']
str3=[' ']
for each in range(last+1):
if x in str1:
english+=1
continue
elif x in str2:
number+=1
continue
elif x in str3:
block+=1
continue
else :
others+=1
continue
return (english,number,block,others)
x=input('请输入字符串')
print(edg(x))
本帖最后由 xiaosi4081 于 2020-6-25 18:59 编辑
range函数原型:
def range(start,end):
i = start
t = []
while i < end:
t.append(i)
i += 1
return t
因为用的是<,所以它会少执行一次
所以要+1
设个最佳呗{:10_254:} xiaosi4081 发表于 2020-6-25 18:58
range函数原型:
因为用的是
没有 step {:10_277:}而且现在的 range 返回迭代器{:10_249:} range(0,3)是从0到3-1就是2
range(last+1)就是range(0,last+1),是从0到last 这个地方last为啥+1才是正确结果啊 不是从0开始算吗
我认为代码这里 last=length-1 然后又 last+1 完全是多余的 直接 用 length 就好了
正确代码:
def edg(x):
english=0
number=0
block=0
others=0
last=len(x)
str1=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
str2=['0','1','2','3','4','5','6','7','8','9']
str3=[' ']
for each in range(last):
if x in str1:
english+=1
continue
elif x in str2:
number+=1
continue
elif x in str3:
block+=1
continue
else :
others+=1
continue
return (english,number,block,others)
x=input('请输入字符串')
print(edg(x)) 永恒的蓝色梦想 发表于 2020-6-25 20:08
没有 step 而且现在的 range 返回迭代器
额……迭代器哪里不好了 本帖最后由 _2_ 于 2020-6-26 11:21 编辑
xiaosi4081 发表于 2020-6-25 18:58
range函数原型:
因为用的是
def range_(start=0, stop, step=1):
l =
while 1:
if each := start + step < stop and step != 0:
l +=
continue
break
return l.__iter__()
这什么也不是 永恒的蓝色梦想 发表于 2020-6-25 20:08
没有 step 而且现在的 range 返回迭代器
还有,start 和 step 应分别初始化为 0 和 1 _2_ 发表于 2020-6-26 10:39
不是吧啊sir,不测试直接发? 永恒的蓝色梦想 发表于 2020-6-26 10:51
不是吧啊sir,不测试直接发?
随手一写
页:
[1]