给定一个特定的字符串。查找字符串中第一个零的位置
告诉我为什么程序不能正常运行
这是代码:
s = input("Введите строку: ")
for i in s:
if s.index("0"):
i = s.index("0")
print(i)
else:
print("Нулей нет")
如果输入 0,则会产生以下结果:
Введите строку: py0thon
2
2
2
2
2
2
2
如果你不写0,那么:
Введите строку: python
Traceback (most recent call last):
File "C:\Users\Яриор\PycharmProjects\Первый ноль в строке\main.py", line 3, in <module>
if s.index("0"):
ValueError: substring not found
发生错误的原因是,
s.index
如果找不到该字符,它会引发异常,因此无法使用它来了解该行中是否存在这样的字符(当然,除非您使用 try- except ) - 有一个针对 this 的构造символ in строка
。好吧,正如他们在评论中所写,这里根本不需要循环。正确代码:工作示例:
关于如何解决此问题还有其他几种选择。
使用 find() 方法
find() 方法返回字符串中第一次出现子字符串(在本例中为“0”)的索引,如果未找到子字符串,则返回 -1。这是一种简单快速的方法。
使用循环和 enumerate()
您可以使用 enumerate() 手动迭代字符串,这将允许您获取每个字符的索引,并检查该字符是否为空。
通过正则表达式
您可以使用 re 模块中的搜索和启动方法。
https://docs.python.org/3/library/re.html#re.search
性能加成:
find() 方法和正则表达式往往速度很快,尤其是在大型字符串上,因为它们在较低级别上进行了优化。由于 Python 的开销, enumerate() 循环可能会慢一些,但这对于典型任务来说很少是问题。