我正在使用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在我的代码中的位置。有什么想法吗?
答案 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,因为函数被命名为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"))