用python解该题需要注意的一件事

P1320 压缩技术(续集版)

Caterpie_771 @ 2022-12-14 16:52:49

我刚开始学python,准备拿些入门题练手,结果在这题反复RE,十分郁闷。RE代码如下

n = input()
x0 = x1 = 0
N = len(n)
for i in range(N - 1):
    n += input()
print(N,end = " ")
if n[0] == '1':
    print(0, end = " ")
for i in n:
    if i == '0':
        if x1 > 0:
            print(x1, end = " ")
        x0 += 1
        x1 = 0
    else:
        if x0 > 0:
            print(x0, end = " ")
        x1 += 1
        x0 = 0
print(max(x0, x1))

我思考了一个多小时,以为是计算方法错了,非常难受。 然后我发现AC的同学的输入方式和我有点不一样,他们在input()之后添加了.strip() 我马上尝试,果然AC了

n = input().strip()
x0 = x1 = 0
N = len(n)
for i in range(N - 1):
    n += input().strip()
print(N,end = " ")
if n[0] == '1':
    print(0, end = " ")
for i in n:
    if i == '0':
        if x1 > 0:
            print(x1, end = " ")
        x0 += 1
        x1 = 0
    else:
        if x0 > 0:
            print(x0, end = " ")
        x1 += 1
        x0 = 0
print(max(x0, x1))

虽然我不知道这个strip是干嘛用的,但是没有它确实是导致了RE的出现。 如果您在用python做这题时的有多个RE,不妨参考一下这个案例,希望能帮到您


by Terrible @ 2022-12-14 17:05:53

@Caterpie_771 洛谷里一些数据行尾有\r,需要清除掉。


by Terrible @ 2022-12-14 17:06:24

\r的问题不是一个新颖的问题。


by Terrible @ 2022-12-14 17:08:04

如果你去翻翻之前的讨论发现有很多的是\r的问题。


by huazai676 @ 2022-12-14 17:31:12

有没有一种可能,python的input函数返回值默认是字符串,所以直接int(input())强转类型就好了?


by PuJunXi_python @ 2022-12-14 18:58:27

strip()是python中字符串里的一个函数 作用是去掉字符串两边的指定字符 没有就默认去掉空格


by Caterpie_771 @ 2022-12-15 12:06:52

@Terrible 哦,好的,谢谢您


by 多半 @ 2023-05-31 18:17:40

感谢,也是遇到这个问题


|