Um pouquinho mais da sintaxe do Python

Um amigo meu está fazendo faculdade, e começando a aprender a programar (com Java[bb].) Ele me mostrou semana passada um exercício que o professor passou:

  • Solicitar que o usuário informe um número inteiro que será usado como limite superior do contador.
  • O programa deverá exibir todos os números pares existentes entre 1 e o limite superior (informado via teclado pelo usuário).
  • Após a exibição dos números o programa deverá perguntar se o usuário deseja executar mais uma vez.

Por curiosidade, eu escrevi uma solução em Python[bb]:

continuar=True
while continuar:
  numero=int(raw_input("Informe o valor inicial da repeticao: "))
  print str(range(2,numero+1,2))[1:-1]
  continuar=raw_input("Continuar? (S/N) ").upper()!="N"

Update: inspirado nos comentários do Rafael Santini, uma solução com break fica mais elegante:

while 1:
  numero=int(raw_input("Informe o valor inicial da repeticao: "))
  print str(range(2,numero+1,2))[1:-1]
  if raw_input("Continuar? (S/N) ").upper()=="N":break

Publicado por

Elcio

Elcio é sócio fundador da Visie Padrões Web. Pioneiro no uso e divulgação dos padrões do W3C no Brasil, Elcio já treinou equipes de dezenas de empresas como Globo.com, Terra, Petrobras, iG e Locaweb. Além disso, tem dirigido as equipes da Visie no desenvolvimento de projetos web para marcas como Brastemp, Itaú Unibanco, Johnson & Johnson e Rede Globo.

13 comentários em “Um pouquinho mais da sintaxe do Python”

  1. Pingback: Zamana.eti.br
  2. Por curiosidade, escrevi essa solução em Java:

    import java.util.Scanner;
    public class Main {
    public static void main(String[] args) {
    while (true) {
    System.out.println(“Informe o valor inicial da repeticao: “);
    int limite = (new Scanner(System.in)).nextInt();
    for (int i = 2; i <= limite; i = i + 2) System.out.println(i);
    System.out.println(“Continuar? (S/N): “);
    if (!(new Scanner(System.in)).next().equalsIgnoreCase(“S”)) break;
    }
    }
    }

    Em número de linhas o Java perde porque é necessário declarar pelo menos uma classe e um método, mas o tamanho do código que de fato resolve o problema é praticamente o mesmo.

    Sobre a legibilidade do código, penso que é relativa. Como não conheço Python, tive que pensar um pouco para entender a linha “print str(range(2,numero+1,2))[1:-1]”. Para quem trabalha com Java, certamente achará a solução em Java mais legível 😉

  3. Por curiosidade, escrevi essa solução em Java:

    import java.util.Scanner;
    public class Main {
    public static void main(String[] args) {
    while (true) {
    System.out.println(“Informe o valor inicial da repeticao: “);
    int limite = (new Scanner(System.in)).nextInt();
    for (int i = 2; i <= limite; i = i + 2) System.out.println(i);
    System.out.println(“Continuar? (S/N): “);
    if (!(new Scanner(System.in)).next().equalsIgnoreCase(“S”)) break;
    }
    }
    }

    Em número de linhas o Java perde porque é necessário declarar pelo menos uma classe e um método, mas o tamanho do código que de fato resolve o problema é praticamente o mesmo.

    Sobre a legibilidade do código, penso que é relativa. Como não conheço Python, tive que pensar um pouco para entender a linha “print str(range(2,numero+1,2))[1:-1]”. Para quem trabalha com Java, certamente achará a solução em Java mais legível 😉

  4. Por curiosidade, escrevi essa solução em Java:

    import java.util.Scanner;
    public class Main {
    public static void main(String[] args) {
    while (true) {
    System.out.println(“Informe o valor inicial da repeticao: “);
    int limite = (new Scanner(System.in)).nextInt();
    for (int i = 2; i

  5. Karlisson,

    Acho que com 9 linhas você nem consegue declarar o pacote, importar bibliotecas e a sua classe java, muito menos fazer o código acima funcionar. Eu gastaria, com meu padrão de escrita, ao menos 50 linhas para resolver o problema proposto em java 🙁

  6. Na verdade, em Java dava a mesma coisa:

    boolean continuar = true;
    while (continuar) {
    int numero = Integer.parseInt(Console.input(“Informe o valor inicial da repetição: “));
    for (int x=2; x

  7. Ola Elcio,

    Achei bem bacana a forma de resolver, vi que no PHP 5 também eh possivel usar a funcao RANGE.

    Nao sei a sintaxe do Python, mas no PHP ficaria mais ou menos assim

    foreach(range(0,$string,2) as $s)
    echo $s;

    mas discutindo aqui nao seria melhor usar o for?

    tipo

    for (i =0; i

  8. Ola Delcio,

    Achei bem bacana a forma de resolver, vi que no PHP 5 também eh possivel usar a funcao RANGE.

    Nao sei a sintaxe da funcao no Python, mas no PHP ficaria mais ou menos assim

    foreach(range(0,$string,2) as $s)
    echo $s;

    mas discutindo aqui nao seria melhor usar o for?

    tipo

    for (i =0; i

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *