我需要帮助,我的编码有些不对劲,似乎无法弄清楚是什么......我确定它只是一个简单的错误,我现在似乎无法找到它
string = raw_input("Enter String->")
length = len(string)
index = 0
while index < length:
if string(index) == 'a':
print "Character found is a"
index = length
elif string(index) != 'a':
print "Character", index"is not an a, sorry"
错误当然是“语法无效”
这是到目前为止的新代码
string = raw_input("Enter String->")
length = len(string)
index = 0
while index < length:
if string[index] == 'a':
print "Character found is a"
index = length
elif string[index] != 'a':
print "Character", index,"is not an a, sorry"
从这里运行代码时,它无限地运行说“字符0不是”
第三次编辑
string = raw_input("Enter String->")
length = len(string)
index = 0
while index < length:
if string[index] == 'a':
index += 1
print "Character found is a"
break
elif string[index] != 'a':
print "Character", index, "is not an a, sorry"
答案 0 :(得分:2)
index = length
将直接跳到字符串的末尾。如果要检查每个字符,则需要使用index += 1
通常你会写这样的循环
string = raw_input("Enter String->")
for idx, c in enumerate(string):
if c == 'a':
print "Character found is a"
else:
print "Character", idx, "is not an a, sorry"
哪个更容易阅读并且更难以犯这样的错误
答案 1 :(得分:1)
索引访问是使用[i]
完成的,而不是(i)
,表示函数调用。
所以你应该这样做:
if string[index] == 'a':
还要记下关于代码中其他问题的其他答案。
答案 2 :(得分:1)
你遇到了一些问题:
a[1]
,index = length
向上移动一级。它会在if
和elif
之间打破你的循环。print
缺少一个逗号。更好的方法是:
string = raw_input("Enter String->")
for index, character in enumerate(string):
if character == 'a':
print "Character found is a"
break
else:
print "Character", index, "is not an a, sorry"
答案 3 :(得分:0)
print "Character", index"is not an a, sorry"
应该阅读
print "Character " + str(index) + " is not an a, sorry"
答案 4 :(得分:0)
你需要在每次循环后增加index
,否则while循环将永远在同一个索引上运行:
string = raw_input("Enter String->")
length = len(string)
index = 0
while index < length:
if string[index] == 'a':
print "Character found is a"
break
else:
print "Character" + str(index) + " is not an a, sorry"
index += 1
但是,您应该研究@ gnibbler的建议,并将其用于while
循环以用于此特定目的。
答案 5 :(得分:0)
首先,非常快速的建议 - 使用名称为'string'的变量会导致头痛。
所以,你写的代码告诉我你需要在第一个'a'之前看到每个字符位置而不是它的实际值,你需要知道字符串中是否有'a',并且在第一个'a'之后你根本不关心任何字符。这些目标对我来说似乎不太可能,所以我怀疑你的真实问题与你提出的问题略有不同。
我真的看到两个根本问题:
<强> 1。如何找到给定字符串中第一个'a'的索引?如果这是您主要关注的问题,那么您需要做的就是
response = raw_input('Prompt: ')
index_a = response.find('a')
foo.find(bar)
将为您提供bar的索引,如果它根本不在foo中,则为-1
。但是,如果您甚至不关心栏的位置,只需要验证它在哪里,请改用bar in foo
。
<强> 2。如何检查字符串中的每个字符? Python在许多情况下不会使您构建迭代 - 它为您提供了for
结构,为您完成了gruntwork。如果您确实需要,此示例将让您跟踪预匹配的字符位置,但请注意counter
与流控制没有任何关系:
response = raw_input('Prompt: ')
counter = 0
for r in response:
if r is 'a':
print('We found it.')
break
else:
print('Not ' + str(counter))
counter += 1