我将列表中的每个字符串切成两半。然而,当我打印字符串"的前半部分时,我想分别打印每半部分;具有";其为";哈;它把我每一半的第一个字母都打印出来。有人知道原因吗?
lis = ['have', 'agreat', 'day']
for x in lis:
first = x[:len(x)//2]
second = x[len(x)//2:]
print(first)
output>>>
ha
agr
d
print(first[0])
output>>>
h
a
d
它运行良好:
lis = ['have', 'agreat', 'day']
for x in lis:
first = x[:len(x)//2]
second = x[len(x)//2:]
print(first+'|'+second)
ha|ve
agr|eat
d|ay
UPDATE您应该将您的前半部分和后半部分添加到不同的列表中。然后在循环之外,只需使用random随机加入两个half。
请记住,如果您的循环中有任何逻辑(如打印(,它将为每次迭代打印。这就是你得到h、a、d的原因,因为你要打印列表中每个单词前半部分的第一个字母。
import random
lis = ['have', 'agreat', 'day']
first = []
second = []
for x in lis:
first.append(x[:len(x)//2])
second.append(x[len(x)//2:])
final = random.choice(first) + random.choice(second)
print(final)
输出:agrve
事实上,你的拆分很好,但你没有打印出你想要的。在第二次打印中,您将首先打印[0],这将给您h(have(、a(agreat(、d(day(。
只更改第一个[0],按第二个
for x in lis:
first = x[:len(x)//2]
second = x[len(x)//2:]
print("List " + x)
print(first)
print(second)
结果
List have
ha
ve
List agreat
agr
eat
List day
d
ay
first[0]
将打印字符串前半部分的第一个字母。如果你有have
,你把它切成两半first = ha
-second = ve
。first[0]
会给你h
。所以我想你想打印ha - ve
lis = ['have', 'agreat', 'day']
for x in lis:
first = x[:len(x)//2]
second = x[len(x)//2:]
print(first,'-',second)
输出
ha - ve
agr - eat
d - ay