【问题标题】:Mac OS X Find Version returns two statementsMac OS X Find Version 返回两个语句
【发布时间】:2014-12-07 00:12:26
【问题描述】:

所以我一直在编写一个程序,到目前为止我认为我做得很好。我有一个使用 platform.mac_ver() 查找 Mac OS X 版本的函数。我从 platform.mac_ver() 中隔离了额外的值,以便它只包含版本,仅此而已。但是,我也想添加风味文本。这就是我所拥有的:

def Version_Finder():
try:
    v, _, _ = platform.mac_ver()
    v = float('.'.join(v.split('.'[:2]))
    if v == 10.5:
        print("Mac OS X v. 10.5 Leopard")
    if v == 10.6:
        print("Mac OS X v. 10.6 Snow Leopard")

以此类推,直到:

    if v == 10.10:
        print("Mac OS X v. 10.10 Yosemite")
    else:
        print("Mac OS X v. ", v)

这是我运行 10.9 Mavericks 时的输出:

Mac OS X v. 10.9 Mavericks
('Mac OS X v. ', 10.9)

我想要的只是输出的第一行,但我认为我需要 else 语句,这样如果有人运行 10.4 Tiger 之类的东西,他们仍然会得到“Mac OS X v”。部分。

如果你们能帮助我,那就太好了。 :)

【问题讨论】:

  • 为什么要转换为浮点数而不只是比较字符串?还考虑到您正在使用一个函数,您可以返回值然后解决您的问题
  • 函数def Version_Finder():中是否包含try语句?

标签: python macos python-2.7 python-3.x


【解决方案1】:

如果你只想运行一个部分,你应该使用elif

if v == ...
    pass
elif v == ...
    pass
elif v == ...
    pass
else:
    ...

否则,您将始终打印两条短信(如您所见)。发生这种情况的原因是,在以下 if/else 中,总有一个是正确的:

if v == 10.10:
    print("Mac OS X v. 10.10 Yosemite")
else:
    print("Mac OS X v. ", v)

因此,如果您运行的是 10.9,那么它将打印 if v == 10.9 语句,但它也会检查上述 if/else 语句。在这种情况下,if v == 10.10 不正确,因此它将运行else 部分。这意味着它将打印另一条短信。

【讨论】:

  • 太棒了!这似乎起到了作用。我知道我是 Python 新手,但我猜 elif 就像“else if:”或类似的东西。但它奏效了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 2017-02-24
  • 1970-01-01
  • 2011-06-07
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多