我有一个 72 个字符的字符串,程序验证它是否有效。当最后一个字符是“S”或“E”时有效,3 个“N”不连续重复时也有效。
例如。
注:法院,但据了解确实必须有72个字符。
WNEWSWNNNNNEWSWSEWSNSNNNNWENW
例如,这是无效的,因为它有 3 个“N”连续重复 2 次。它不以“S”或“E”结尾。字母 N 不一定要在 3 中重复 2 次。它可以或多或少,问题是 N 不能连续重复 3 次。
到目前为止,我设法首先验证它是 72 个字符长,然后验证它是否以“S”或“E”结尾。但我不知道如何验证字母“N”不应连续重复 3 次。
robot = str(input("Ingrese una secuencia de movimiento del robot [Único intento]: "))
if(len(robot) == 72):
robot_1 = len(robot)
last_robot = robot[robot_1-1]
if(last_robot == "S" or last_robot == "E"):
secuencia_valida = 1
print("")
print(secuencia_valida)
else:
print("")
secuencia_invalida = 0
print(secuencia_invalida)
else:
print("")
print("Error. Saliendo en 5 segundos...")
time.sleep(5)
那,我真的很感谢这个社区的帮助。敬请关注。
如果您只想丢弃字符的重复,这比看起来要容易得多
"N"
,只需在中使用成员资格运算符:"NNN" not in s
True
仅当"NNN"
它不是 . 的子字符串时才会返回s
。如果重复超过 3 个“N”是有效的,这个近似值对你不起作用,但我推断情况并非如此。通过使用in
"...WNNNNS"
它也将是无效的。请注意,Python 允许负索引、
-1
数组的最后一个元素、-2
倒数第二个元素等等。a[-1]
是最后一个字符,您不必杂耍它len
来计算其正指数。