求助!!!

P1320 压缩技术(续集版)

Todd_22 @ 2024-12-19 16:45:17

有无python巨佬帮看看 ,功能已经全部实现,卡在输入格式了

问题是: 要按2次回车,一次作为结束标志,一次作为执行计算, 所以测试环境过不了,哎

下面是代码:

def count_zeros_and_ones(result_str):
    count = 1         # 当前数字,记录它本身的个数
    out_str = ""  # 用来存放每一部分连续的数量
    for i in range(1, len(result_str)):
        if result_str[i] == result_str[i - 1]:
            count += 1
        else:          # 变为另一个数字
            out_str += str(count)  # !存完再变count
            count = 1  # 记录它本身的个数
    # 最后一组不会变0或1了,记得补充上
    out_str += str(count)
    return out_str
matrix = []

while True:
    row = input()
    if row.strip() == "":  # 判断是否输入了空行(换行)
        break
    matrix.append(row)

n = len(matrix)
result_str = ''.join(matrix)
# print(' '.join(f"{str(n)}" + count_zeros_and_ones(result_str)))
print(' '.join(f"{str(n)}{count_zeros_and_ones(result_str)}"))

by maxiaomeng @ 2024-12-19 17:13:47

@Todd_22 你可以使用tryexcept判断是否读到文件结尾,因为input()在读入失败时会抛出异常。

while True:
    try:
        row = input()
    except:
        break
    matrix.append(row)

by Todd_22 @ 2024-12-20 14:25:31

@maxiaomeng 你好,我已经进行了尝试,似乎并不能很好解决,在上述代码中我可以一直进行input()读取,且无法有效退出。

再次感谢你的回复


by maxiaomeng @ 2024-12-21 11:23:32

@Todd_22 本地测试时,你需要按下Ctrl+Z和回车(在Linux系统或IDLE中是Ctrl+D)才能告诉程序已经读到文件结尾,但评测时不需要,因为用的是文件。


by Todd_22 @ 2024-12-21 18:08:19

@maxiaomeng 感谢耐心已解决?

之前也忘记用flag标记交替输出了


|