Python for循环字符串拼接失效 无法生成偶数位字符新串
问题产生原因
- 核心错误是循环内的拼接逻辑写错了:你使用了
==相等比较运算符,代码行(q + x[i]) == q只会判断「拼接后的临时字符串和初始空字符串q是否相等」,返回的布尔值没有任何变量接收,完全不会修改变量q本身的值,因此q从头到尾都是初始化的空字符串,最终输出自然为空。 - 就算把
==错换成=,写反赋值方向也会触发语法报错:Python的赋值规则是右侧表达式计算完成后,赋值给左侧的变量,把待存储的拼接结果放在等号左侧不符合语法要求。
代码修改方案
最小修改(保留原有循环逻辑)
只需要把循环内错误的比较语句替换为正确的赋值语句即可,修正后完整代码:
q = "" x = input("Bir string giriniz: ") if len(x) != 0: for i in range(len(x)): if i % 2 == 0: # += 是 q = q + x[i] 的简写,将拼接结果重新赋值给q q += x[i] print(q)
注:
input()返回值本身就是字符串类型,不需要额外套str()做类型转换。
更简洁的Python原生实现
Python字符串原生支持步长切片,不需要手动写循环判断索引,按照s[起始位置:结束位置:步长]的切片规则,从索引0开始、步长为2取字符,刚好对应所有偶数索引位置的字符,代码可以简化为:
x = input("Bir string giriniz: ") # 省略起始位置默认从0开始,省略结束位置默认取到字符串末尾,步长设为2 print(x[::2])
内容的提问来源于stack exchange,提问作者benegos
相关产品推荐
相关产品推荐

