如何为具有数字参数的函数返回True或False?

时间:2019-04-30 00:59:47

标签: python python-3.x jupyter-notebook

我有两个<Suits><Breaking_Bad>定义的字典,它们具有相同的键。

Suits = {'name': 'Suits', 'seasons': 8, 'status': 'Ongoing'}    
Breaking_Bad = {'name': 'Breaking Bad', 'seasons': 5, 'status': 'Completed'}

我被要求写一个名为high_seasonstv_showseasons)的函数参数,该函数参数将tv_show作为第一个参数,并将季节(表示为数字)作为第二个参数,如果给定的tv_show季节大于或等于提供的季节,则返回True,否则返回False

这是我的代码:

def high_seasons (tv_show, seasons):    
    tv_show.keys() == seasons.keys()    
    if tv_show ['seasons'] >= seasons ['seasons']:    
        return True    
    else:    
        return False

high_seasons(Suits, 7) ## Expected result True        
high_seasons(Breaking_Bad, 7) ## Expected result False    

我收到以下错误:

AttributeError: 'int' object has no attribute 'keys'

2 个答案:

答案 0 :(得分:2)

您需要确定函数首先接受的对象类型。根据您的描述,我认为您想设计功能签名,例如:

def high_seasons(tv_show: dict, seasons: int):
    pass

但是,在逻辑代码块中,您尝试调用seasons.keys()。这是引发上面错误的部分。就像说的那样,一个int对象没有keys属性。因此,要实现上述签名,您的代码应类似于:

def high_seasons (tv_show, seasons):       
    if tv_show['seasons'] >= seasons:    
        return True    
    else:    
        return False

修改 更新为使用语法正确的方法来显式声明变量类型。致谢@Luna。

答案 1 :(得分:2)

def high_seasons(tv_show: dict, seasons: int) -> bool:
    return int(tv_show.get('seasons')) >= seasons

您能解决您的问题吗?