3 回答
![?](http://img1.sycdn.imooc.com/54584e1f0001bec502200220-100-100.jpg)
TA贡献1877条经验 获得超1个赞
如果您只想要 @ 所在的字符串索引,为什么不使用 string.index()
>>> email = "email@gmail.com"
>>> email.index('@')
5
![?](http://img1.sycdn.imooc.com/545861c80001141e02200220-100-100.jpg)
TA贡献1780条经验 获得超1个赞
您需要在循环counter 内设置变量。您也不需要该count变量,因为您已经有了i,它是迭代次数(从 0 开始)。根据您的描述,当您找到一个@标志时,您还需要从循环中中断,以防有多个标志(即使对于电子邮件地址来说不应该有)。
所以你可以这样做:
email = "email@gmail.com"
length = len(email)
for i in range(length):
counter = email[i]
if counter == "@":
print(counter)
print(i+1)
break
您还可以在迭代电子邮件时使用enumerate给您提供的函数来简化代码:icounter
email = "email@gmail.com"
for i, counter in enumerate(email):
if counter == "@":
print(counter)
print(i+1)
break
![?](http://img1.sycdn.imooc.com/54584cde0001d19202200220-100-100.jpg)
TA贡献1873条经验 获得超9个赞
问题是您没有在循环内设置计数器的值,它被设置为第一个值,然后再也不会设置。您还需要设置 email[i] 的计数器,因为 i 是递增的变量。
以下代码有效:
email = "email@gmail.com"
length = len(email)
count = 0
for i in range(length):
counter = email[i] # This is the line I changed!
if counter == "@":
print(counter)
print(count)
i = 0
else:
count = count + 1
请记住,由于索引从 0 开始,因此您将得到“@ 5”的输出。
添加回答
举报