(Python) A instrução de loop for. Tarefas típicas


Tarefa
Encontre a soma de todos os inteiros entre 100 e 500. 

Vamos escrever um programa que resolva esse problema sem usar uma fórmula. Se escrevermos apenas o resultado da adição à variável s, por exemplo, como
\(s=100+101+102+103+...+500\),

vamos gastar muito tempo na própria gravação, porque o computador não vai entender como usar as reticências em uma expressão aritmética e teremos que escrever todos os números de 100 a 500. E o valor de tal programa será insignificante. Especialmente se quisermos mudar nossos números e escolher um intervalo diferente.

O que devemos fazer?
Se prestarmos atenção à entrada acima, usaremos constantemente a adição "+".
Você pode tentar adicionar números à variável s gradualmente. Por exemplo, usando esta notação
s=s+i.
O que fizemos aqui:
1) à direita colocamos a expressão s+i, ou seja, pegamos o valor da variável s e adicionamos o valor da variável para ele i;
2) à esquerda definimos o nome da variável s, ou seja, todo o resultado do cálculo à direita será armazenado na mesma variável s, então vamos mudar o valor da variável s
Resta apenas alterar o valor da variável i no intervalo desejado. Isso pode ser feito com um loop for.
 
Os números de 100 a 500 que estão em nosso intervalo devem ir para a variável i por sua vez. 
Exemplo
# IMPORTANTE! Primeiro você precisa redefinir a variável s, # para que na primeira etapa o número 100 seja adicionado a zero, # e não para o que está na memória! s = 0 for i in range(100, 501): # cabeçalho do loop onde i s += i # altera seu valor de 100 a 500 em passos de 1, # no corpo do loop gradativamente até a variável s,   # adicione o valor da variável variável i, # e salve o resultado de volta na variável s

Esta solução é muito semelhante ao cálculo da soma das ações:
 \(s = 0 + 100 = 100, \\ s = 100 + 101 = 201, \\ s = 201 + 102 = 303 \\ ... \)  
 

Número máximo entre os números fornecidos

Ao estudar o operador condicional, tocamos no tópico de encontrar o número máximo de vários números inseridos. No problema "Máximo de quatro números" usamos o seguinte algoritmo:
1. atribua o valor da variável M à primeira das quatro variáveis;
2. se o valor da segunda variável for maior que o valor da variável M, substitua o valor da variável pelo valor da segunda variável;
3. se o valor da terceira variável for maior que o valor da variável M, substitua o valor da variável M pelo valor da terceira variável;< br /> 4. se o valor da quarta variável for maior que o valor na variável M, substitua o valor da variável pelo valor da quarta variável.

Pode-se ver que cada  o número (vamos denotar por X) comparamos com a variável M, como segue:
 
pseudocódigo
entrada X se (M < X) então   M = X
O principal neste código é determinar qual valor inicial a variável M terá.
Normalmente, ao resolver um problema de encontrar um máximo ou mínimo, o valor inicial da variável M é atribuído igual ao primeiro número.
Assim, o código acima deve ser executado 1 vez menos que o número de números (porque o primeiro número deve ser digitado e armazenado como valor inicial da variável M).
Se tivermos o número de números definido no teclado (por exemplo, na variável n), podemos organizar um ciclo (de 2 a n), usando o mesmo número para armazenar a variável numérica.

Tente escrever o programa você mesmo.

Máximo não entre todos

Se precisarmos encontrar o máximo (mínimo) não entre todos os números inseridos, mas apenas entre os números que atendem a uma determinada condição, devemos levar em consideração o fato de que o primeiro número que tomamos como valor inicial do máximo (mínimo) nem sempre satisfará nossos requisitos.

Por exemplo, se estamos procurando o número negativo máximo, tendo o conjunto de dados: \(\{5, -2, 4, 2, -1, -3\}\ ) obteremos o número 5 no valor inicial do máximo, e é positivo e maior que qualquer negativo. E, portanto, a condição X > M sempre será falso.

Portanto, não basta adicionar apenas uma verificação de número negativo ao algoritmo do problema anterior, é necessário também levar em consideração o fato de que o primeiro número pode não satisfazer a condição exigida (neste caso, ser negativo ).

Você pode corrigir isso adicionando a seguinte condição dentro do loop:

pseudocódigo
se X é negativo, então se M >= 0 ou M < X, então M=X
No código especificado, a condição  M >= 0 permite que você execute a ação  M = X mesmo se variável contém inicialmente um valor obviamente maior que o resto (no nosso exemplo, o valor é igual a 5).

Também observamos que, se o intervalo de números for conhecido, o número mínimo (máximo) do intervalo especificado pode ser considerado como o valor inicial do máximo (mínimo).

Tarefa

N números são fornecidos. Encontre o segundo maior elemento em uma sequência.

Este problema permite duas interpretações.
Por exemplo, se recebermos um conjunto de números: \(10\ 15\ 20\ 35\ 14\ 35\ 10\), qual deve ser a resposta ?
Sob o "segundo maior elemento" ou simplesmente "segundo máximo", pode ser entendido como:
1) o valor que estaria na penúltima casa se dispuséssemos (ordenássemos) todos os valores em ordem não decrescente (cada próximo é maior ou igual ao anterior). Então para o conjunto de números considerado a resposta será o valor 35;
2) o valor do elemento, que é maior que apenas o máximo. Então a resposta é 20.
Se houver apenas um elemento máximo no conjunto de números (todos os outros são menores), ambas as interpretações são iguais e a resposta será a mesma para os dois casos, caso contrário, a resposta será diferente.

Considere o primeiro caso (vamos escrever o algoritmo em pseudocódigo).
Para encontrar a resposta, usaremos duas variáveis:
1) maximum1 - valor máximo (primeiro máximo);
2) maximum2 - segundo máximo (nossa resposta).

Se o intervalo de alteração de valores for conhecido, então, como valores iniciais, tomamos um número obviamente menor que o limite inferior do intervalo (por exemplo, com um intervalo de -1000 para 1000 - pegue o número -1001)
Se o intervalo de valores for desconhecido, você pode escrever os dois primeiros números de entrada nos valores iniciais das variáveis ​​max1 e max2 e depois compará-los duas variáveis. input N //número de números entrada a, b máx1 = um max2 = b se b > um, então     max1 = b     máx2 = um
A seguir, consideramos todos os outros elementos (os 2 primeiros já foram visualizados, portanto, começaremos pelo 3º) nc para i de 3 a n insira um se um > maximum1 //houve um valor maior que maximum1 Que max2 = max1 //o antigo primeiro máximo torna-se o segundo max1 = a //o ​​novo elemento será o primeiro máximo de outra forma //próximo elemento não mais que max1 // precisa ser comparado com o valor maximum2 se um > máximo 2 Que max2 = a //toma como o novo valor max2 // max1 não muda neste caso Todos Todos kts
Tente implementar esse algoritmo você mesmo.