【问题标题】:Function Definition: How to make a string say whether or not integer is true or false?函数定义:如何让一个字符串说出整数是真还是假?
【发布时间】:2015-10-16 01:57:07
【问题描述】:

实现将数字和字符串作为输入的函数test_number:

(one of 'even', 'odd', 'positive', or 'negative')

如果数字具有字符串指示的属性,则该函数返回True,否则返回False

它适用于偶数/奇数部分,所以我猜它会为正/负给出错误的结果,因为我在函数的前面放置了“else: return 'False'”。

【问题讨论】:

  • 首先,什么是“断言不”?我敢打赌,这在你的教科书的前一章中已经回答了......
  • 返回布尔值TrueFalse(不带引号),这样您就可以在assert 语句中去掉== 'True'。此外,您需要使用 assert not 以便您可以测试您的功能是否正确失败,例如test_number(100, 'odd').
  • @ekhumoro 谢谢!这正是我想知道的(断言不是语句)

标签: python function definition


【解决方案1】:

首先,什么是“断言不”?

这是一个 assert 语句,其表达式以 not 逻辑否定运算符开头。

其次,为什么我的代码会产生错误的结果?

第一个到达的else 返回 False。删除所有else 子句并在最后返回False,因为如果没有其他条件,这将是默认值。

【讨论】:

  • 所以我尝试将 else 子句放在最后(这有效),但是当我放入 assert not 语句时,会弹出一个错误。如果我单独插入断言语句,代码仍然有效。如何让我的代码使用 assert not 语句?
  • 不要输入else。回来吧。
【解决方案2】:

您可以将属性字符串放入字典中:

def test_number(n, s):
    conditions = {'even': (n % 2 == 0),
                  'odd': (n%2 == 1),
                  'positive': (n >=0),
                  'negative': (n<0)}

    return conditions.get(s, None)

assert test_number(14, 'even')
assert not test_number(100, 'odd')
assert test_number(33, 'positive')
assert not test_number(100, 'negative')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多