我想检查字符串是否是初学者

时间:2016-05-05 13:56:54

标签: python string

我想检查字符串是否是初学者(按字母顺序排列)。

def is_abecdarian(s):
    index = 0
    while index < len(s)-1:
        if s[index + 1] > s[index]:
            return True
        index += 1
    return False
print(is_abecdarian('babcd'))

如果我将我的False和True切换到周围并切换大于小于它的工作。我不明白的是'a'不大于'b',但是当我运行上面的代码时,它返回True。

4 个答案:

答案 0 :(得分:5)

var previous=[]; var selectelements = $('select'); $('select').focus(function(e){ previous[$('select').index(this)] = $(this).val(); }); $('select').change(function(e){ alert("previous value = " + previous[$('select').index(this)] + ", current value = " + $(this).val()); previous[$('select').index(this)] = $(this).val(); }); 退出该函数,所以现在它一直运行,直到有两个字母顺序正确然后退出。

答案 1 :(得分:1)

编写循环的方式,如果订购了任何一对字符,它将返回True。如果所有对都失败,它只返回False。第一对ba未通过if检查,但第二对ab通过,函数返回True。

这是不对的,因为如果您考虑一下,在您检查所有字符之前,您无法知道字符串是初学者。当你完成循环时,你应该只返回True。相反,只要您发现一对不正常的字符,就可以安全地返回False。

这就是为什么翻转布尔值和<操作的原因。

答案 2 :(得分:0)

只有当下一个字符是<而不是当前字符时,才需要返回False。 如果在所有循环期间没有发生这种情况,则返回True。

这是正确的功能:

def is_abecdarian(s):
    index = 0
    while index < len(s)-1:
        if s[index + 1] < s[index]:
            return False
        index += 1
    return True

print(is_abecdarian('babcd'))
print(is_abecdarian('abcz'))

答案 3 :(得分:0)

为什么它不起作用已经被解释过了,所以,只是添加到已解释的内容:

def is_abecdarian(s):
    return all(s[i] < s[i+1] for i in range(len(s)-1))

print(is_abecdarian('babcd'))
print(is_abecdarian('ejmpq'))

哪里

    只有当参数中的所有布尔值都为True时,
  • all(argument)才会返回True;

  • s[i] < s[i+1]s的第i个元素与下一个元素之间的比较。

  • s[i] < s[i+1] for i in range(len(s)-1)s的所有连续元素对进行比较。