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

13 respostas para “Um pouquinho mais da sintaxe do Python”

  1. Avatar de Elcio

    Rafael, você pode usar &lt; para gerar o sinal <

    Isso acontece porque há algumas tags HTML que podem ser inseridas aqui, então o WordPress faz controle de HTML.

  2. Avatar de Rafael Santini

    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. Avatar de Rafael Santini

    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. Avatar de Rafael Santini

    Parece que há um bug no comentário. Acho que ele não faz o tratamento do sinal “menor que”, ignorando o que vem depois.

  5. Avatar de Rafael Santini

    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

  6. Avatar de Pedro

    faz tempo q naum tme nada putil por aqui hein!

  7. Avatar de Felipe Gomes

    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 🙁

  8. Avatar de Alexandre
    Alexandre

    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

  9. Avatar de Karlisson

    Rapaz, isso em C ou Java dava umas 7 ou 9 linhas 😀

  10. Avatar de Micael

    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

  11. Avatar de Micael

    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 *