功能sameChars无法正常工作

时间:2015-07-09 02:46:30

标签: python string list

  

如果字符串包含相同的字符,则使用两个字符串并返回True,无论出现次数或出现顺序如何。必须考虑所有字符且区分大小写(例如,sameChars("AA","a")返回False,而sameChars("FgFFF","ggFF")返回True

我的代码是:

def sameChars(s1, s2):
    if s1 <= s1:
        return True
    else:
        return False

如果我把:

,函数会返回true
print sameChars('AA', 'a')

但它应该返回false

3 个答案:

答案 0 :(得分:5)

您正在查看 - s1 <= s1。这将永远为真,因为您正在使用s1检查s1

即使您使用s1检查了s2,我也认为这不符合您的要求,因为s1 <= s2正在检查s1是否按字典顺序低于{{1} }}

最好的方法是将s1和s2的字符放入一个集合中,然后检查它是否相等。

示例 -

s2

或者只返回def sameChars(s1, s2): if set(s1) == set(s2): return True else: return False

的结果
set(s1) == set(s2)
  

set - 无序的独特元素集合

In Sets元素将是唯一的,因为它们不允许重复,并且它们是无序的,因此如果它们具有相同的元素,则两个集合将是相等的,而不管元素出现的顺序如何。

答案 1 :(得分:0)

起初:

def sameChars(s1, s2):
    return set(s1) == set(s2)

总是如此。你弄错了。

一般来说,你的功能不太有用。像s1 <= s1 那样使用它的任何地方都可以简单地用sameChars(s1, s2)做同样的效果。

答案 2 :(得分:0)

您在OP中说过要检查字符串是否包含相同的字符。这是一种方法:

QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    QQuickWindow *wnd1 = engine.rootObjects()[0]->findChild<QQuickWindow *>("wnd1");
    if(wnd1)
        wnd1->setTitle("Server");
    QQuickWindow *wnd2 = engine.rootObjects()[0]->findChild<QQuickWindow *>("wnd2");
    if(wnd2)
        wnd2->setTitle("Client");