急急急,小白弱弱请教一个关于字符串的大问题

2021-03-20 09:54:39 +08:00
 hellogitooxx
有一个字符数组(可自增),如:AAAABAAABBABBBABBBBCABDBABCABBAAAAACAAAACBCAAAAAABBBCCACBABBABAAABAE....,将它切成 6 行(暂定)输出,切法如下:
A, A, B, B, A, A, A, C, A, A, A, A
A, A, B, C, B, A, A, A, B, C, B, E
A, B, A, A, C, A, A, A, B, B, A, .
A, B, B, B, A, A, A, A, B, A, A, .
B, A, B, D, B, A, C, A, C, B, A, .
A, B, B, B, B, C, B, A, C, B, B, .
即每 6 个元素为一组,向竖输出,请给出互相行之间不断比较,有三个以上(暂定)相同的元素开始计算,一直计算出每行之间都不存在(四个,五个。。。)相同的元素为止,注意提示第几行和第几行有相同并统计出现次数。


刚开始我看着也有点迷糊,按题目的意思是,先把字符串格式输出先,然后再取每行前面三个元素相互比较,然后再统计,后面要是还有相同的元素,不断比较和统计。

我的代码如下:

def get_str(str1):
# 字符串转换成列表,方便观看
list_ = list(str1)
# print(list_)

# 生成 6 个空列表
b1, b2, b3, b4, b5, b6 = ([] for i in range(6))
# 等待间隔数,利用方差
c1 = 6
# 统计相同次数
num = 0
# 相同行次统计
sum_tong = 0

for index, value in enumerate(list_):
index = index + 1

if index % c1 == 1:
b1.append(value)
# print(b1)
if index % c1 == 2:
b2.append(value)

if index % c1 == 3:
b3.append(value)

if index % c1 == 4:
b4.append(value)

if index % c1 == 5:
b5.append(value)

if index % c1 == 0:
b6.append(value)

if index <= 18 and len(b1) == 3:

if b1 == b2 and (index % c1 == 2):
sum_tong = sum_tong + 1
print("第一行和第二行相同----次数::" + str(sum_tong))
elif b1 == b3 and (index % c1 == 3):
sum_tong = sum_tong + 1
print("第一行和第三行相同----次数::" + str(sum_tong))

elif b1 == b4 and (index % c1 == 4):

sum_tong = sum_tong + 1
print("第一行和第四行相同----次数::" + str(sum_tong))
elif b1 == b5 and (index % c1 == 5):

sum_tong = sum_tong + 1
print("第一行和第五行相同----次数::" + str(sum_tong))
elif b1 == b6 and (index % c1 == 0):

sum_tong = sum_tong + 1
print("第一行和第六行相同----次数::" + str(sum_tong))

elif b2 == b3 and (index % c1 == 3):

sum_tong = sum_tong + 1
print("第二行和第三行相同----次数::" + str(sum_tong))
elif b2 == b4 and (index % c1 == 4):

sum_tong = sum_tong + 1
print("第二行和第四行相同----次数::" + str(sum_tong))
elif b2 == b5 and (index % c1 == 5):

sum_tong = sum_tong + 1
print("第二行和第五行相同----次数::" + str(sum_tong))
elif b2 == b6 and index % c1 == 0:

sum_tong = sum_tong + 1
print("第二行和第六行相同----次数::" + str(sum_tong))

elif b3 == b4 and (index % c1 == 4):

sum_tong = sum_tong + 1
print("第三行和第四行相同----次数::" + str(sum_tong))
elif b3 == b5 and (index % c1 == 5):

sum_tong = sum_tong + 1
print("第三行和第五行相同----次数::" + str(sum_tong))
elif b3 == b6 and index % c1 == 0:

sum_tong = sum_tong + 1
print("第三行和第六行相同----次数::" + str(sum_tong))

elif b4 == b5 and (index % c1 == 5):

sum_tong = sum_tong + 1
print("第四行和第五行相同----次数::" + str(sum_tong))
elif b4 == b6 and index % c1 == 0:

sum_tong = sum_tong + 1
print("第四行和第六行相同----次数::" + str(sum_tong))

elif b5 == b6 and index % c1 == 0:
sum_tong = sum_tong + 1
print("第五行和第六行相同----次数::" + str(sum_tong))

elif index > 18 and sum_tong >= 2:

if b1 == b2 and (index % c1 == 2):
num = num + 1
print("第一行和第二行有对应相同的----次数:" + str(num))
elif b1 == b3 and (index % c1 == 3):
num = num + 1
print("第一行和第三行有对应相同的----次数:" + str(num))

elif b1 == b4 and (index % c1 == 4):

num = num + 1
print("第一行和第四行有对应相同的----次数:" + str(num))
elif b1 == b5 and (index % c1 == 5):

num = num + 1
print("第一行和第五行有对应相同的----次数:" + str(num))
elif b1 == b6 and (index % c1 == 0):

num = num + 1
print("第一行和第六行有对应相同的----次数:" + str(num))

elif b2 == b3 and (index % c1 == 3):

num = num + 1
print("第二行和第三行有对应相同的----次数:" + str(num))
elif b2 == b4 and (index % c1 == 4):

num = num + 1
print("第二行和第四行有对应相同的----次数:" + str(num))
elif b2 == b5 and (index % c1 == 5):

num = num + 1
print("第二行和第五行有对应相同的----次数:" + str(num))
elif b2 == b6 and index % c1 == 0:

num = num + 1
print("第二行和第六行有对应相同的----次数:" + str(num))

elif b3 == b4 and (index % c1 == 4):

num = num + 1
print("第三行和第四行有对应相同的----次数:" + str(num))
elif b3 == b5 and (index % c1 == 5):

num = num + 1
print("第三行和第五行有对应相同的----次数:" + str(num))
elif b3 == b6 and index % c1 == 0:

num = num + 1
print("第三行和第六行有对应相同的----次数:" + str(num))

elif b4 == b5 and (index % c1 == 5):

num = num + 1
print("第四行和第五行有对应相同的----次数:" + str(num))
elif b4 == b6 and index % c1 == 0:

num = num + 1
print("第四行和第六行有对应相同的----次数:" + str(num))

elif b5 == b6 and index % c1 == 0:
num = num + 1
print("第五行和第六行有对应相同的----次数:" + str(num))

print("相同总行数" + str(sum_tong))
# 打印
print(b1)
print(b2)
print(b3)
print(b4)
print(b5)
print(b6)
print("--------------------------------------------------------------------")
# print("总共出现相同次数" + str(num))


data1=get_str("AAACDAAAACDABAABBAAABBAABAABBAACCBAA....")


我卡住了,思路有了,解题方法有点问题,求高手赐教
2443 次点击
所在节点    Python
22 条回复
hellogitooxx
2021-03-21 21:50:56 +08:00
@Pagliacii 我想问下,我还需要在哪方面进修,我对编程很感兴趣。像你回答题中,类似 defaultdict,combinations,我都没有学习到,没想到是 python 就自带的,很是惭愧。
Pagliacii
2021-03-21 21:57:38 +08:00
@hellogitooxx #21 多看看 Python 官方文档 https://docs.python.org/3/,多了解 Python 的标准库

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/763392

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX