妙脆角 发表于 2021-1-14 11:28:00

python 第二十讲中 动动手1中的问题

这是小甲鱼的代码:
    |如果前边和后边都是三个大写字母:
    |-- 如果后边第四个字母也是大写字母(不符合条件):
    |-- -- 清空记录B和C,重新统计
    |-- 如果后边仅有三个大写字母(符合所有条件):
    |-- -- 打印结果,并清空所有记录,进入下一轮统计
    """
    if countA == 3 and countC == 3:
      if i+1 != length and str1.isupper():
            countB = 0
            countC = 0
      else:
            print(str1, end='')
            countA = 3
            countB = 0
            countC = 0
if i+1 != length and str1.isupper(): 这段代码小甲鱼翻译的是‘如果后边第四个字母也是大写字母(不符合条件)’,我理解不了如果这样翻译为什么代码这么写,我对这句代码理解翻译的是“如果i+1不等于lenth并且不等于str是个大写字母”
求大神帮我理一下思路

昨非 发表于 2021-1-14 11:37:17

if i+1!=length就是说下一个字符的索引不等于长度,就是遍历字符串还没到头的意思,后面还有

i+1就是下一个字符的索引,所以str1就是下一个字符
根据str1.isupper的返回值就能判断下一个字符是大写还是小写

jackz007 发表于 2021-1-14 11:49:08

if i+1 < length and str1.isupper():
      这样写似乎更加合理, 其逻辑为,在索引 str1 之前,必须保证 i + 1 没有下标越界,这就是 i + 1 < length 的意义,在这个前提下,再判断 str1 是不是一个大写字母。

妙脆角 发表于 2021-1-14 12:05:08

昨非 发表于 2021-1-14 11:37
if i+1!=length就是说下一个字符的索引不等于长度,就是遍历字符串还没到头的意思,后面还有

i+1就是下 ...

这段代码的意思如果第四个字母也是大写字母,代码不应该是 == str.isupper(),小甲鱼为什么写成 !=str.isupper()

妙脆角 发表于 2021-1-14 12:07:52

jackz007 发表于 2021-1-14 11:49
这样写似乎更加合理, 其逻辑为,在索引 str1 之前,必须保证 i + 1 没有下标越界,这就是 i +...

谢谢 我明白了

妙脆角 发表于 2021-1-14 12:08:30

昨非 发表于 2021-1-14 11:37
if i+1!=length就是说下一个字符的索引不等于长度,就是遍历字符串还没到头的意思,后面还有

i+1就是下 ...

谢谢我想明白了
页: [1]
查看完整版本: python 第二十讲中 动动手1中的问题