<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comentários sobre: Retornando o último número (script Python)</title>
	<atom:link href="http://elcio.com.br/retornando-o-ultimo-numero-script-python/feed/" rel="self" type="application/rss+xml" />
	<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/</link>
	<description>HTML5, CSS, Tableless, Desenvolvimento Web, Python, Linux</description>
	<lastBuildDate>Thu, 09 Feb 2012 17:29:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Por: Converter formato de data do MySQL para o formato BR, em uma linha de código só &#171; Frederico Fiuza o/ UND3RW0LRD OF D3RF</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4999</link>
		<dc:creator>Converter formato de data do MySQL para o formato BR, em uma linha de código só &#171; Frederico Fiuza o/ UND3RW0LRD OF D3RF</dc:creator>
		<pubDate>Tue, 08 Jan 2008 10:40:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4999</guid>
		<description>[...] não &#8230; quero ver agora como faz isso com Python &#8230; o Elcio Ferreira talvez ache uma solução &#8230;ou meu camarada Tio Mike, ou [...]</description>
		<content:encoded><![CDATA[<p>[...] não &#8230; quero ver agora como faz isso com Python &#8230; o Elcio Ferreira talvez ache uma solução &#8230;ou meu camarada Tio Mike, ou [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: WillianFernandes.com.br &#187; Retornando o último número (script JavaScript) - Python, PHP, JavaScript, AJAX, XML, XHTML, CSS, Desenvolvimento Web, Linux</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4998</link>
		<dc:creator>WillianFernandes.com.br &#187; Retornando o último número (script JavaScript) - Python, PHP, JavaScript, AJAX, XML, XHTML, CSS, Desenvolvimento Web, Linux</dc:creator>
		<pubDate>Thu, 22 Nov 2007 17:18:28 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4998</guid>
		<description>[...] DGmike publicou o post Retornando o último número (script PHP), o Elcio mostrou a visão dele em Retornando o último número (script Python) e resolvi fazer o mesmo em [...]</description>
		<content:encoded><![CDATA[<p>[...] DGmike publicou o post Retornando o último número (script PHP), o Elcio mostrou a visão dele em Retornando o último número (script Python) e resolvi fazer o mesmo em [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: DGmike</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4997</link>
		<dc:creator>DGmike</dc:creator>
		<pubDate>Thu, 22 Nov 2007 17:13:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4997</guid>
		<description>No meu blog, o junior deu uma solução interessante e eu fiz alguns testes de velocidade (os resultados estão no meu blog). Parece que a solução dele foi melhor, além de ser um pouco mais enxuta. Então eu a adaptei a uma função:
&lt;code&gt;
function ultimo_numero ($string = &#039;&#039;)
{
  if (&#039;string&#039; === gettype ($string))
  {
    return;
  }
  $string = preg_split ( &#039;/[^\d]+/&#039;, $string );
  return end ( $string );
}
&lt;/code&gt;
Se retirar esse if, a função sempre retornará uma string (verifiquei isso usando o var_dump() )</description>
		<content:encoded><![CDATA[<p>No meu blog, o junior deu uma solução interessante e eu fiz alguns testes de velocidade (os resultados estão no meu blog). Parece que a solução dele foi melhor, além de ser um pouco mais enxuta. Então eu a adaptei a uma função:<br />
<code><br />
function ultimo_numero ($string = '')<br />
{<br />
  if ('string' === gettype ($string))<br />
  {<br />
    return;<br />
  }<br />
  $string = preg_split ( '/[^\d]+/', $string );<br />
  return end ( $string );<br />
}<br />
</code><br />
Se retirar esse if, a função sempre retornará uma string (verifiquei isso usando o var_dump() )</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Gabriel Falcão</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4996</link>
		<dc:creator>Gabriel Falcão</dc:creator>
		<pubDate>Thu, 22 Nov 2007 13:52:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4996</guid>
		<description>ops, esqueci de escapar:

&gt;&gt;&gt; def ultimo(string):
...     a = re.search(r&#039;(?P&lt;ultimo&gt;\d+)[^\d]*$&#039;, string)
...     return a and a.group(&#039;ultimo&#039;)
...
&gt;&gt;&gt; ultimo(&#039;dsadasdas22222dddd233&#039;)
&#039;233&#039;
&gt;&gt;&gt; ultimo(&#039;dsadasdas22222dddd&#039;)
&#039;22222&#039;
&gt;&gt;&gt; ultimo(&#039;1a&#039;)
&#039;1&#039;
&gt;&gt;&gt; ultimo(&#039;1a2&#039;)
&#039;2&#039;</description>
		<content:encoded><![CDATA[<p>ops, esqueci de escapar:</p>
<p>&gt;&gt;&gt; def ultimo(string):<br />
&#8230;     a = re.search(r&#8217;(?P&lt;ultimo&gt;\d+)[^\d]*$&#8217;, string)<br />
&#8230;     return a and a.group(&#8216;ultimo&#8217;)<br />
&#8230;<br />
&gt;&gt;&gt; ultimo(&#8216;dsadasdas22222dddd233&#8242;)<br />
&#8217;233&#8242;<br />
&gt;&gt;&gt; ultimo(&#8216;dsadasdas22222dddd&#8217;)<br />
&#8217;22222&#8242;<br />
&gt;&gt;&gt; ultimo(&#8217;1a&#8217;)<br />
&#8217;1&#8242;<br />
&gt;&gt;&gt; ultimo(&#8217;1a2&#8242;)<br />
&#8217;2&#8242;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Gabriel Falcão</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4995</link>
		<dc:creator>Gabriel Falcão</dc:creator>
		<pubDate>Thu, 22 Nov 2007 13:50:54 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4995</guid>
		<description>gostei mais da sua, mas aqui vai a minha:

&gt;&gt;&gt; def ultimo(string):
...     a = re.search(r&#039;(?P\d+)[^\d]*$&#039;, string)
...     return a and a.group(&#039;ultimo&#039;)
...
&gt;&gt;&gt; ultimo(&#039;dsadasdas22222dddd233&#039;)
&#039;233&#039;
&gt;&gt;&gt; ultimo(&#039;dsadasdas22222dddd&#039;)
&#039;22222&#039;
&gt;&gt;&gt; ultimo(&#039;1a&#039;)
&#039;1&#039;
&gt;&gt;&gt; ultimo(&#039;1a2&#039;)
&#039;2&#039;</description>
		<content:encoded><![CDATA[<p>gostei mais da sua, mas aqui vai a minha:</p>
<p>&gt;&gt;&gt; def ultimo(string):<br />
&#8230;     a = re.search(r&#8217;(?P\d+)[^\d]*$&#8217;, string)<br />
&#8230;     return a and a.group(&#8216;ultimo&#8217;)<br />
&#8230;<br />
&gt;&gt;&gt; ultimo(&#8216;dsadasdas22222dddd233&#8242;)<br />
&#8217;233&#8242;<br />
&gt;&gt;&gt; ultimo(&#8216;dsadasdas22222dddd&#8217;)<br />
&#8217;22222&#8242;<br />
&gt;&gt;&gt; ultimo(&#8217;1a&#8217;)<br />
&#8217;1&#8242;<br />
&gt;&gt;&gt; ultimo(&#8217;1a2&#8242;)<br />
&#8217;2&#8242;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Daniel Luz</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4994</link>
		<dc:creator>Daniel Luz</dc:creator>
		<pubDate>Thu, 22 Nov 2007 13:21:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4994</guid>
		<description>DGmike, o que eu quis dizer sobre o tratamento do tipo de dados era mais sobre a entrada, que você verificava se o parâmetro passado era string... no retorno não sei se dar um parâmetro opcional vale a pena (em PHP não bastaria um (int)ultimoNum($x)?). Então até por questões de comparação, acho mais justo não colocar isso apenas no PHP, fica injustamente maior quando no fim a linguagem permitiria converter o resultado pra int com a mesma facilidade que as outras ;)

E aqui uma versão em JavaScript:
&lt;code&gt;function ultimoNum(string) {
    var match = string.match(/(\d+)\D*$/);
    if (match) {
        return match[1];
    }
}&lt;/code&gt;
Ela também teve um pequeno toque específico à linguagem: só dei return caso um número seja encontrado, para que caso contrário a função retorne undefined em vez de null ou string em branco, o que me pareceu mais apropriado :) Mas se a briga for por número de linhas de código, dá pra reduzir o return a um condicional como os outros, retornando até mesmo undefined, estando disposto a deixar o código um pouco menos legível pra quem não está habituado à linguagem.</description>
		<content:encoded><![CDATA[<p>DGmike, o que eu quis dizer sobre o tratamento do tipo de dados era mais sobre a entrada, que você verificava se o parâmetro passado era string&#8230; no retorno não sei se dar um parâmetro opcional vale a pena (em PHP não bastaria um (int)ultimoNum($x)?). Então até por questões de comparação, acho mais justo não colocar isso apenas no PHP, fica injustamente maior quando no fim a linguagem permitiria converter o resultado pra int com a mesma facilidade que as outras <img src='http://elcio.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>E aqui uma versão em JavaScript:<br />
<code>function ultimoNum(string) {<br />
    var match = string.match(/(\d+)\D*$/);<br />
    if (match) {<br />
        return match[1];<br />
    }<br />
}</code><br />
Ela também teve um pequeno toque específico à linguagem: só dei return caso um número seja encontrado, para que caso contrário a função retorne undefined em vez de null ou string em branco, o que me pareceu mais apropriado <img src='http://elcio.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Mas se a briga for por número de linhas de código, dá pra reduzir o return a um condicional como os outros, retornando até mesmo undefined, estando disposto a deixar o código um pouco menos legível pra quem não está habituado à linguagem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Paulo Vitor</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4993</link>
		<dc:creator>Paulo Vitor</dc:creator>
		<pubDate>Thu, 22 Nov 2007 12:20:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4993</guid>
		<description>PHP ::

function ultimoNumero($string){
	preg_match_all(&#039;/\d+/&#039;, $string, $p);
	return $p[0][count($p[0])-1];
}</description>
		<content:encoded><![CDATA[<p>PHP ::</p>
<p>function ultimoNumero($string){<br />
	preg_match_all(&#8216;/\d+/&#8217;, $string, $p);<br />
	return $p[0][count($p[0])-1];<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: DGmike</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4992</link>
		<dc:creator>DGmike</dc:creator>
		<pubDate>Thu, 22 Nov 2007 12:17:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4992</guid>
		<description>E a versão resumida-filha-da-mae-num-consigo-entender-nada em php.

&lt;code&gt;
function ultimoNum ($s=&#039;&#039;,$rs=true){
  $s=preg_match_all(&#039;\d+&#039;,(string) $s,$m);
  $r=end($m[0])?end($m[0]):&#039;&#039;;
  if($rs)return (string) $r;
  else return (int) $r;
}
&lt;/code&gt;

Hmmm... como ficaria em javaScript?</description>
		<content:encoded><![CDATA[<p>E a versão resumida-filha-da-mae-num-consigo-entender-nada em php.</p>
<p><code><br />
function ultimoNum ($s='',$rs=true){<br />
  $s=preg_match_all('\d+',(string) $s,$m);<br />
  $r=end($m[0])?end($m[0]):'';<br />
  if($rs)return (string) $r;<br />
  else return (int) $r;<br />
}<br />
</code></p>
<p>Hmmm&#8230; como ficaria em javaScript?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: DGmike</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4991</link>
		<dc:creator>DGmike</dc:creator>
		<pubDate>Thu, 22 Nov 2007 12:12:39 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4991</guid>
		<description>Então... a versão em PHP melhorada, com base no que o Daniel disse:
&lt;code&gt;
function ultimo_numero ($string = &#039;&#039;, $retornarString = true)
  {
    $string = (string) $string;
    $string = preg_match_all (&#039;(\d+)&#039;, $string, $match);
    $return = end($match[0]) ? end($match[0]) : &#039;&#039;;
    if ($retornarString)
      {
        return (string) $return;
      } else {
        return (int) $return;
      }
  }
&lt;/code&gt;

Meio complexo, mas funciona sempre retornando uma string ou um inteiro, para você poder utilizar como você quiser. Ficou um pouco mais complicada e maior, mas é bem mais completa. :D</description>
		<content:encoded><![CDATA[<p>Então&#8230; a versão em PHP melhorada, com base no que o Daniel disse:<br />
<code><br />
function ultimo_numero ($string = '', $retornarString = true)<br />
  {<br />
    $string = (string) $string;<br />
    $string = preg_match_all ('(\d+)', $string, $match);<br />
    $return = end($match[0]) ? end($match[0]) : '';<br />
    if ($retornarString)<br />
      {<br />
        return (string) $return;<br />
      } else {<br />
        return (int) $return;<br />
      }<br />
  }<br />
</code></p>
<p>Meio complexo, mas funciona sempre retornando uma string ou um inteiro, para você poder utilizar como você quiser. Ficou um pouco mais complicada e maior, mas é bem mais completa. <img src='http://elcio.com.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Daniel Luz</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4990</link>
		<dc:creator>Daniel Luz</dc:creator>
		<pubDate>Thu, 22 Nov 2007 11:31:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4990</guid>
		<description>Aliás... uma daquelas soluções que você bate na cabeça e diz &quot;por que não pensei nisso antes?&quot;

&lt;code&gt;def ultimoNumero(string):
    match = re.search(r&#039;(\d+)\D*$&#039;, string)
    return match.group(1) if match else None&lt;/code&gt;

Ou em Ruby:

&lt;code&gt;def ultimo_numero(string)
  string =~ /(\d+)\D*\Z/ ? $1 : nil
end&lt;/code&gt;

Mais simples e computacionalmente mais leve :)</description>
		<content:encoded><![CDATA[<p>Aliás&#8230; uma daquelas soluções que você bate na cabeça e diz &#8220;por que não pensei nisso antes?&#8221;</p>
<p><code>def ultimoNumero(string):<br />
    match = re.search(r'(\d+)\D*$', string)<br />
    return match.group(1) if match else None</code></p>
<p>Ou em Ruby:</p>
<p><code>def ultimo_numero(string)<br />
  string =~ /(\d+)\D*\Z/ ? $1 : nil<br />
end</code></p>
<p>Mais simples e computacionalmente mais leve <img src='http://elcio.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Rafael S. Souza</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4989</link>
		<dc:creator>Rafael S. Souza</dc:creator>
		<pubDate>Thu, 22 Nov 2007 11:30:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4989</guid>
		<description>Infinitas vezes melhor!

:)</description>
		<content:encoded><![CDATA[<p>Infinitas vezes melhor!<br />
 <img src='http://elcio.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Daniel Luz</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4988</link>
		<dc:creator>Daniel Luz</dc:creator>
		<pubDate>Thu, 22 Nov 2007 11:21:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4988</guid>
		<description>Uma maneira simples de se resolver a questão é envolver o findall num valor alternativo:
return (re.findall(...) or [None])[-1]
(usei None, mas poderia ser trocando por uma string em branco se desejado)

Ainda falta a questão de verificar o tipo de dados, mas aqui acho interessante comentar: PHP faz conversão implícita de tipos de dados, resultando numa prática bastante comum de passar dados sem convertê-los para o que se realmente deseja (o mais comum, na minha experiência, é tratar strings como se fossem números). Python, por sua vez, nunca faz conversão imlpícita (apenas coerção de tipos numéricos: você pode fazer contas misturando ints e floats, etc), e assim você na prática dificilmente tem em mãos um valor que não é do tipo que se espera. Por isso, acho que numa versão Python o teste do tipo do parâmetro passado é desnecessário. Outro detalhe também é que Python favorece exceções em vez de ignorar erros silenciosamente, então seria até mais &quot;correto&quot; deixar a função findall gerar uma exceção quando o dado passado não for string. ;)



E pra fins comparativos (também adoro esse tipo de comparação), uma versão equivalente em Ruby:
def ultimo_numero(string)
  string.scan(/\d+/).pop
end
Também retornando nil em caso vazio :)</description>
		<content:encoded><![CDATA[<p>Uma maneira simples de se resolver a questão é envolver o findall num valor alternativo:<br />
return (re.findall(&#8230;) or [None])[-1]<br />
(usei None, mas poderia ser trocando por uma string em branco se desejado)</p>
<p>Ainda falta a questão de verificar o tipo de dados, mas aqui acho interessante comentar: PHP faz conversão implícita de tipos de dados, resultando numa prática bastante comum de passar dados sem convertê-los para o que se realmente deseja (o mais comum, na minha experiência, é tratar strings como se fossem números). Python, por sua vez, nunca faz conversão imlpícita (apenas coerção de tipos numéricos: você pode fazer contas misturando ints e floats, etc), e assim você na prática dificilmente tem em mãos um valor que não é do tipo que se espera. Por isso, acho que numa versão Python o teste do tipo do parâmetro passado é desnecessário. Outro detalhe também é que Python favorece exceções em vez de ignorar erros silenciosamente, então seria até mais &#8220;correto&#8221; deixar a função findall gerar uma exceção quando o dado passado não for string. <img src='http://elcio.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>E pra fins comparativos (também adoro esse tipo de comparação), uma versão equivalente em Ruby:<br />
def ultimo_numero(string)<br />
  string.scan(/\d+/).pop<br />
end<br />
Também retornando nil em caso vazio <img src='http://elcio.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Fernando Bittencourt</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4987</link>
		<dc:creator>Fernando Bittencourt</dc:creator>
		<pubDate>Thu, 22 Nov 2007 10:45:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4987</guid>
		<description>A possibilidade de fazer funcao_ou_metodo()[chave] é uma das coisas que fazem (bastante, até) falta em PHP.</description>
		<content:encoded><![CDATA[<p>A possibilidade de fazer funcao_ou_metodo()[chave] é uma das coisas que fazem (bastante, até) falta em PHP.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: DGmike</title>
		<link>http://elcio.com.br/retornando-o-ultimo-numero-script-python/comment-page-1/#comment-4986</link>
		<dc:creator>DGmike</dc:creator>
		<pubDate>Thu, 22 Nov 2007 10:04:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.elcio.com.br/retornando-o-ultimo-numero-script-python/#comment-4986</guid>
		<description>Hmmm...
e se não tiver qualquer número na string? Ele retorna uma string vazia? Já fez o teste com unitTest?</description>
		<content:encoded><![CDATA[<p>Hmmm&#8230;<br />
e se não tiver qualquer número na string? Ele retorna uma string vazia? Já fez o teste com unitTest?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

