Python 循环错误 - 它在 6 个字符串上运行良好,但超过 6 个字符串时就会崩溃
Python loop error - Its runs fine for 6 character strings but falls apart for more than that
任务
给定一个从 到 索引的给定长度的字符串,将其索引为偶数和索引为奇数的字符作为 space 分隔的字符串打印在一行上。
正如您所看到的,它可以很好地处理 grace,但不能以相同的方式处理 thomasshelby。你能告诉我,这段代码有什么问题吗?
length = int(input())
k=1
while k <= length:
name = input()
name1 = name2 = ""
for i in name:
if name.index(i)%2 == 0:
name1 = name1 + i
for j in name:
if name.index(j)%2 != 0:
name2 = name2 + j
print(name1,name2)
k += 1
这是结果
2
thomasshelby
toaeb hmsshly
grace
gae rc
奇偶字符可以直接使用字符串切片
检查下面的例子:
name = input()
name1 = name[::2]
name2 = name[1::2])
str.index
方法returns最小索引值。
这是对方法的描述:
def index(self, sub, start=None, end=None): # real signature unknown; restored from __doc__
"""
S.index(sub[, start[, end]]) -> int
Return the lowest index in S where substring sub is found,
such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Raises ValueError when the substring is not found.
"""
所以在你的程序中,当输入字符串中存在相同的元素时,它不会是理想的。
您可以使用索引循环变量代替索引内置方法:
length = int(input())
k=1
while k <= length:
name = input()
name1 = name2 = ""
for i in range(len(name)):
if i%2 == 0:
name1 = name1 + name[i]
for j in range(len(name)):
if j%2 != 0:
name2 = name2 + name[j]
print(name1,name2)
k += 1
任务
给定一个从 到 索引的给定长度的字符串,将其索引为偶数和索引为奇数的字符作为 space 分隔的字符串打印在一行上。
正如您所看到的,它可以很好地处理 grace,但不能以相同的方式处理 thomasshelby。你能告诉我,这段代码有什么问题吗?
length = int(input())
k=1
while k <= length:
name = input()
name1 = name2 = ""
for i in name:
if name.index(i)%2 == 0:
name1 = name1 + i
for j in name:
if name.index(j)%2 != 0:
name2 = name2 + j
print(name1,name2)
k += 1
这是结果
2
thomasshelby
toaeb hmsshly
grace
gae rc
奇偶字符可以直接使用字符串切片
检查下面的例子:
name = input()
name1 = name[::2]
name2 = name[1::2])
str.index
方法returns最小索引值。
这是对方法的描述:
def index(self, sub, start=None, end=None): # real signature unknown; restored from __doc__
"""
S.index(sub[, start[, end]]) -> int
Return the lowest index in S where substring sub is found,
such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Raises ValueError when the substring is not found.
"""
所以在你的程序中,当输入字符串中存在相同的元素时,它不会是理想的。
您可以使用索引循环变量代替索引内置方法:
length = int(input())
k=1
while k <= length:
name = input()
name1 = name2 = ""
for i in range(len(name)):
if i%2 == 0:
name1 = name1 + name[i]
for j in range(len(name)):
if j%2 != 0:
name2 = name2 + name[j]
print(name1,name2)
k += 1