为什么在此代码的输出中没有显示?

时间:2019-09-22 18:58:51

标签: python-3.x

我正在使用python3。我正在尝试编写一个程序,以防输入字符串甚至返回两个中间字符,并且如果它是奇数,则返回中间字符。我相信任务很简单,但是我的代码返回了,输出中不需要的None

def get_middle(s):
    if len(s)%2==0:
        #recall that division of two integers outputs a float so I gotta integer it back 
        print(s[int(len(s)/2)-1]+s[int(len(s)/2)])
    else:
        print(s[int(len(s)/2)])


print(get_middle("house"))
print(get_middle("houses"))

以下代码的输出是

u
None
us
None

我只是看不到None在我的代码中的位置。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

因此,基本上,当您说出print(get_middle(s))时,python会打印该函数返回的内容,在您的情况下为None,因为没有return语句。

您可以在这里做两件事: 1.从函数返回所需的值,并让调用该函数的代码将其打印出来。

def get_middle(s):
    if len(s)%2==0:
        #recall that division of two integers outputs a float so I gotta integer it back 
        return s[int(len(s)/2)-1]+s[int(len(s)/2)]
    else:
        return s[int(len(s)/2)]


print(get_middle("house"))
print(get_middle("houses"))
  1. 在调用函数时避免使用print()。

我个人更喜欢1,因为函数被命名为ger_middle,所以它应该让您处于中间位置。在中间执行任何操作都应该是调用它的代码的工作。

答案 1 :(得分:1)

get_middle不返回任何内容,因此当您打印其返回值时,它会显示“无”。

答案 2 :(得分:1)

我认为您的意思是return,而不是get_middle,而是在print中计算的值。即:

def get_middle(s):
    if len(s)%2==0:
        #recall that division of two integers outputs a float so I gotta integer it back 
        return (s[int(len(s)/2)-1]+s[int(len(s)/2)])
    else:
        return (s[int(len(s)/2)])


print(get_middle("house"))
print(get_middle("houses"))