qq275055984 发表于 2020-8-15 23:20:12

第020讲最后一题可以这样写不


str1 = '''ABSaDKSbRIHcRHGcdDIF'''
length=len(str1)
for i in range(3,length-3):
    if str1.islower() and str1.isupper() and str1.isupper()\
       and str1.isupper() and str1.isupper() and str1.isupper()\
       and str1.isupper() and not str1.isupper() and not str1.isupper():
      print(str1,end='')

sunrise085 发表于 2020-8-16 00:05:34

本帖最后由 sunrise085 于 2020-8-16 00:09 编辑

不可以,会溢出。
你写的循环中, i 的范围是3~length-3,但是if中出现了 i+4 和 i-4
当 i = length - 3 的时候,i+4 就溢出了
当 i = 3 的时候,i-4为最后一个字符,显然也不是你想要的。

qq275055984 发表于 2020-8-16 01:26:05

sunrise085 发表于 2020-8-16 00:05
不可以,会溢出。
你写的循环中, i 的范围是3~length-3,但是if中出现了 i+4 和 i-4
当 i = length - 3...

这样改能行吗:


str1 = '''ABSaDKSbRIHcRHGcdDIF'''
length=len(str1)
for i in range(3,length-3):
    if i==3:
      if str1[:3].isupper() and str1.islower() and str1.isupper():
            print(str1,end='')
    elif i+3==length:
      if str1[-3:].isupper() and str1[-4].islower() and str1[-7:-5].isupper():
            print(str1[-4],end='')
    else:
      if str1.islower() and str1.isupper() and str1.isupper()\
       and str1.isupper() and str1.isupper() and str1.isupper()\
       and str1.isupper() and not str1.isupper() and not str1.isupper():
            print(str1,end='')
   

sunrise085 发表于 2020-8-16 09:15:24

qq275055984 发表于 2020-8-16 01:26
这样改能行吗:




小朋友,你为什么不自己去做测试?
小朋友,要把问题考虑全面。

规则是一个小写字母的前后各有且仅有3个大写字母,大写字母个数不能多也不少。自己再查一下程序的逻辑漏洞吧
页: [1]
查看完整版本: 第020讲最后一题可以这样写不