<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
<BR>&nbsp;<BR>
&gt; To: tutor@python.org<BR>&gt; From: alan.gauld@btinternet.com<BR>&gt; Date: Mon, 6 Sep 2010 08:27:31 +0100<BR>&gt; Subject: Re: [Tutor] why do i get None as output<BR>&gt; <BR>&gt; <BR>&gt; "Roelof Wobben" &lt;rwobben@hotmail.com&gt; wrote <BR>&gt; <BR>&gt; def make_empty(seq):<BR>&gt; word2=""<BR>&gt; teller=0<BR>&gt; if type(seq) == type([]):<BR>&gt; teller=0 <BR>&gt; while teller &lt; len(seq):<BR>&gt; seq[teller]=""<BR>&gt; teller = teller + 1 <BR>&gt; elif type(seq) == type(()):<BR>&gt; tup2 = list (seq)<BR>&gt; while teller &gt; tup2.len():<BR>&gt; tup2[teller]=""<BR>&gt; teller = teller + 1<BR>&gt; seq = tuple(tup2)<BR>&gt; else:<BR>&gt; seq = ""<BR>&gt; <BR>&gt; test = make_empty([1, 2, 3, 4])<BR>&gt; <BR>&gt; But now I get None as output instead of []<BR>&gt; <BR>&gt; <BR>&gt; Because None is the default return value from a function.<BR>&gt; If you do not return a value (which you don;t in this case) then <BR>&gt; Python automatically returns None.<BR>&gt; <BR>&gt; You need to return something from your make_empty function.<BR>&gt; <BR>&gt; Also, if all you want to do is return an empty version of <BR>&gt; whatever has been passed in there are much easier <BR>&gt; ways of doing it! And in fact, a list of empty strings is <BR>&gt; not the same as an empty list...<BR>&gt; <BR>&gt; <BR>&gt; HTH<BR>&gt; <BR>&gt; -- <BR>&gt; Alan Gauld<BR>&gt; Author of the Learn to Program web site<BR>&gt; http://www.alan-g.me.uk/<BR>&gt; <BR>&gt; <BR>&gt; _______________________________________________<BR>&gt; Tutor maillist - Tutor@python.org<BR>&gt; To unsubscribe or change subscription options:<BR>&gt; <A href="http://mail.python.org/mailman/listinfo/tutor">http://mail.python.org/mailman/listinfo/tutor</A><BR>
&nbsp;<BR>
Oke, <BR>
&nbsp;<BR>
I put a return seq in the programm and it looks now like this :<BR>
&nbsp;<BR>
def encapsulate(val, seq):<BR>&nbsp;&nbsp;&nbsp; if type(seq) == type(""):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return str(val)<BR>&nbsp;&nbsp;&nbsp; if type(seq) == type([]):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return [val]<BR>&nbsp;&nbsp;&nbsp; return (val,)<BR>
&nbsp;<BR>
def insert_in_middle(val, seq):<BR>&nbsp;&nbsp;&nbsp; middle = len(seq)/2<BR>&nbsp;&nbsp;&nbsp; return seq[:middle] + encapsulate(val, seq) + seq[middle:]<BR>
&nbsp;<BR>
def make_empty(seq):<BR>&nbsp;&nbsp;&nbsp; """<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt; make_empty([1, 2, 3, 4])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; []<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt; make_empty(('a', 'b', 'c'))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt; make_empty("No, not me!")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ''<BR>&nbsp;&nbsp;&nbsp; """<BR>&nbsp;&nbsp;&nbsp; if type(seq) == type([]):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seq = []<BR>&nbsp;&nbsp;&nbsp; elif type(seq) == type(()):<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seq=()<BR>&nbsp;&nbsp;&nbsp; else:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seq = ""<BR>&nbsp;&nbsp;&nbsp; return seq<BR>
&nbsp;<BR>
if __name__ == "__main__":<BR>&nbsp;&nbsp;&nbsp; import doctest<BR>&nbsp;&nbsp;&nbsp; doctest.testmod()<BR>
&nbsp;<BR>
This works but I don't think its what the exercise means :<BR>
&nbsp;<BR>
<OL>
<LI>
<P class=first>Create a module named <TT class="docutils literal"><SPAN class=pre>seqtools.py</SPAN></TT>. Add the functions <TT class="docutils literal"><SPAN class=pre>encapsulate</SPAN></TT> and <TT class="docutils literal"><SPAN class=pre>insert_in_middle</SPAN></TT> from the chapter. Add doctests which test that these two functions work as intended with all three sequence types.</P></LI>
<LI>
<P class=first>Add each of the following functions to <TT class="docutils literal"><SPAN class=pre>seqtools.py</SPAN></TT>:</P>
<DIV class=highlight-python>
<DIV class=highlight><PRE><SPAN class=k>def</SPAN> <SPAN class=nf>make_empty</SPAN><SPAN class=p>(</SPAN><SPAN class=n>seq</SPAN><SPAN class=p>):</SPAN>
    <SPAN class=sd>"""</SPAN>
<SPAN class=sd>      &gt;&gt;&gt; make_empty([1, 2, 3, 4])</SPAN>
<SPAN class=sd>      []</SPAN>
<SPAN class=sd>      &gt;&gt;&gt; make_empty(('a', 'b', 'c'))</SPAN>
<SPAN class=sd>      ()</SPAN>
<SPAN class=sd>      &gt;&gt;&gt; make_empty("No, not me!")</SPAN>
<SPAN class=sd>      ''</SPAN>
<SPAN class=sd>    """</SPAN>
</PRE></DIV></DIV></LI></OL>
So&nbsp;i think I have to use encapsulate and insert_in_middle. And I don't use it.<BR>
&nbsp;<BR>
Roelof<BR>
<BR>&nbsp;<BR>                                               </body>
</html>