Как найти максимальное число в цикле while

I have written a program to produce the sum and the max number as long as I input, and break when I input 0. I can find the sum now, but the program cannot give me the max….It just gives me 0. Why? and how to solve it?

sumN = 0
maxN = 0
while True:
    n=int(input())    
    if n == 0:
        break
    else:
        sumN += n 
    if n > maxN:
        maxN == n
print(sumN)
print(maxN)

For example, when I input 3 3 3, the sumN gives me 9, but maxN only gives me 0. What’s wrong with my code??
Thanks!!

asked May 1, 2020 at 22:51

NoobTse's user avatar

2

You are using comparing instead of assignment

if n > maxN:
    maxN = n

answered May 1, 2020 at 23:05

Setonix's user avatar

SetonixSetonix

2052 silver badges13 bronze badges

0

What @CONvid19 is saying is that

maxN == n

is a test for equality. What you want is :

maxN = n

which is an assignment.

answered May 1, 2020 at 23:08

bashBedlam's user avatar

bashBedlambashBedlam

1,4021 gold badge7 silver badges11 bronze badges

0

Студворк — интернет-сервис помощи студентам

Вася продолжает экспериментировать с питанием: каждую неделю он покупает себе ланчи разной стоимости и записывает расходы. Посчитайте количество недель, в которые Вася покупал самые дорогие ланчи.
ФОРМАТ ВВОДА
Целые неотрицательные числа, не превосходящие 1 миллион, каждое с новой строки, затем отрицательное число, показывающее конец ввода.
ФОРМАТ ВВОДА
Число, равное количеству наибольших введенных чисел.
For example:
Input Result
800 2
900
850
900
800
850
-2

Подскажите, где ошибка и как исправить?
i = 0
month = int (input(»))
max = 0
while month > -1:
if month >= max:
max = month
i = i + 1
month = int (input(»))
print (i)

Назад в начало

Цикл while («пока») позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается после ключевого слова while и проверяется до выполнения тела цикла.

Цикл while используется, когда невозможно определить точное количество повторений цикла.

i = 0 # объявление переменной i для условия цикла

while i < 5: # ключевое слово ‘while’ и условие выполнение цикла

    # тело цикла

    print(i) # вывод значения переменной i

    i += 1 # увеличение значения переменной i на единицу

# Вывод:

>> 0

>> 1

>> 2

>> 3

>> 4

Цикл while может быть бесконечным.

i = 0

while True: # условие всегда истинно

    print(i)

    i += 1

# Вывод:

>> 0

>> 1

>> 2

>> 3

>> 4



>> 999



# Это может продолжаться долго…

Выполнение цикла можно прерывать с помощью оператора break.

i = 0

while 1: # условие всегда истинно

    if i == 3: # если i равно 3, то вызываем оператор break

        break # оператор break прерывает выполнение цикла

    print(i)

    i += 1

# Вывод:

>> 0

>> 1

>> 2

Оператор continue начинает повторение цикла заново.

i = 0

while i < 5:

    i += 1 #

    if i % 2 == 1: # если значение i нечетно, то вызываем оператор continue

        continue # оператор continue начинает повторение цикла заново

    # в случае вызова continue код ниже не выполнится

    print(i)

# Вывод:

>> 0

>> 2

>> 4

Как и для цикла for, для цикла while мы можем записать конструкцию else.

x = 1

while x < 5:

    print(x)

    x += 1

else:

    print(‘Цикл завершен’)

# Вывод:

>> 1

>> 2

>> 3

>> 4

>> Цикл завершен

Примеры

1. Числа от A до B

# Пользователь вводит числа A и B (A > B). Выведите все числа от A до B включительно.


A = int(input(‘Введите число: ‘))

B = int(input(‘Введите число: ‘))

while A >= B:

    print(A)

    A -= 1

# Ввод:

>> 12

>> 7

# Вывод:

>> 12

>> 11

>> 10

>> 9

>> 8

>> 7

# Ввод:

>> 5

>> 2

# Вывод:

>> 5

>> 4

>> 3

>> 2

2. Много чисел

# Пользователь вводит числа до тех пор, пока не введет 0.

# Выведите количество введенных чисел (0 считать не нужно).


n = int(input(‘Введите число: ‘))

counter = 0 # счетчик введенных чисел

while n: # n неявно преобразуется в тип bool

    # если n равно 0, то выполнение цикла прервется

    n = int(input(‘Введите число: ‘)) # вводим очередное число

    counter += 1 # увеличиваем счетчик


print(f‘Количество чисел {counter})

# Ввод:

>> 1

>> 10

>> 100

>> 1000

>> 0

# Вывод:

>> Количество чисел 4

3. Наименьший делитель

# Пользователь вводит число N (N > 1). Выведите его наименьший делитель.

N = int(input(‘Введите число: ‘))

div = 2

while N % div != 0:

    div += 1

print(f‘Наименьший делитель равен {div})

# Ввод:

>> 10

# Вывод:

>> Наименьший делитель равен 2

# Ввод:

>> 15

# Вывод:

>> Наименьший делитель равен 3

# Ввод:

>> 17

# Вывод:

>> Наименьший делитель равен 17

Решение задач

1. Четные от A до B

Пользователь вводит числа A и B (A > B). Выведите четные числа от A до B включительно.

# Ввод:

>> 10

>> 1

# Вывод:

>> 10

>> 8

>> 6

>> 4

>> 2

2. От A до B на три

Пользователь вводит числа A и B (A < B, A меньше B). Выведите числа от A до B включительно, которые делятся на три.

# Ввод:

>> 1

>> 15

# Вывод:

>> 3

>> 6

>> 9

>> 12

>> 15

3. Сумма чисел

Пользователь вводит числа до тех пор, пока не введет 0. Выведите сумму введенных чисел (0 считать не нужно).

# Ввод:

>> 1

>> 15

>> 10

>> 11

>> 2

>> 0

# Вывод:

>> Сумма равна: 39

4. Максимум

Пользователь вводит числа до тех пор, пока не введет 0. Выведите максимальное введенное число (0 считать не нужно).

# Ввод:


>> 1

>> 15

>> 10

>> 11

>> 2

>> 0

# Вывод:

>> Максимум равен: 15

5. Минимум

Пользователь вводит числа до тех пор, пока не введет 0. Выведите минимальное введенное число (0 считать не нужно).

# Ввод:

>> 1

>> 15

>> 10

>> 11

>> 2

>> 0 # 0 не входит в последовательность

# Вывод:

>> Минимум равен: 1

6. Факториал

Пользователь вводит число N. Выведите факториал число N. Факториал числа N — это произведение всех чисел от 1 до N включительно. Например, факториал числа 5 равен 120.

# Ввод:

>> 5

# Вывод:

>> 120

# Ввод:

>> 3

# Вывод:

>> 6

# Ввод:

>> 4

# Вывод:

>> 24

7. Фибоначчи (финальный босс)

Пользователь вводит число N. Выведите N-ное по счету число Фибоначчи. Последовательность чисел Фибоначчи рассчитывается по такой формуле: F(1) = 1, F(2) = 1, F(K) = F(K-2) + F(K-1). Идея такая: каждое следующее число равно сумму двух предыдущих.

Первые 10 чисел последовательности: 1 1 2 3 5 8 13 21 34 55 …

# Ввод:

>> 5

# Вывод:

>> 5

# Ввод:

>> 10

# Вывод:

>> 55

# Ввод:

>> 8

# Вывод:

>> 21

Below two while loop codes to find a maximum and a minimum values from a given numbers. the first code is not working, output is wrong, which I dont understand why?

the second one is working, after I decalred the input as an integer; if someone could explain for me, how does this make a difference. Thanks

Code1:

 largest = None
 smallest = None

 while True:

     num = input("Enter a number: ")

     if num == "done":
         break

     if largest is None or num> largest:
         largest = num
     elif smallest is None or num< smallest:
         smallest = num

 print ("Maximum is", largest)
 print ("Minimum is", smallest)

Code2

 largest = None
 smallest = None
 while True:
     try:
         num = input("Enter the number: ")
         if num == "done":
             break
         num = int(num)
         if largest is None or largest < num:
             largest = num
         elif smallest is None or smallest > num:
             smallest = num
     except:
         print("Invalid input")

 print ("Maximum is", largest)
 print ("Minimum is", smallest)

asked Oct 31, 2019 at 18:01

user3682875's user avatar

3

The output for «code 1» is different from what you expect because the operands in the comparison are str, for which the defined order is different from the order of the corresponding int.

In other words, if a and b are two ints such that a > b, then we can be sure that str(a) > str(b) only if the length of the two string is the same, otherwise it can happen either str(a) > str(b) or str(a) < str(b) depending on the actual value of a and b.

The ordering of string consisting of numbers is «alphabetical» on characters appearing first, hence, while "1" < "2" < "3", etc., when the two strings have multiple characters, either option is open e.g.:

  • for "2" and "10", "2" > "10" (opposite of 2 < 10) because "2" > "1" and the presence of "0" after the "1" is irrelevant
  • for "2" and "20", "2" < "20" (same as 2 < 20) because "2" == "2" and the presence of "0" after the "2" in "20" makes "20" «bigger».

Note that the string ordering/comparison actually work for any string, even those not containing numbers.

answered Oct 31, 2019 at 20:19

norok2's user avatar

norok2norok2

25.5k4 gold badges71 silver badges98 bronze badges

0

Вопрос от пользователя:

C# реши через while
дано целое число N (> 1). Найти наибольшее целое число K, при котором выполняется неравенство 3K < N.

Подождите!

Не закрывайте страницу. Нейросеть пишет ответ. Он появится тут.

Этот ответ написан нейросетью.

Искуственный интеллект во многом преуспевает, но в некоторых областях может давать неточные ответы.
Если вам не понравился ответ, попробуйте задать его более развёрнуто и конкретно, используя точные параметры.

Ответ нейросети:

Данное задание можно решать несколькими способами. Я представлю один из таких способов, который использование цикла while.

Первым шагом мы должны получить значение числа N. Также, учитывая условие задачи, заранее можем определить минимальное значение числа K — это 0. Для нахождения максимального значения K мы будем использовать цикл while.

Цикл while позволяет выполнять блок инструкций до тех пор, пока выполняется определенное условие. В нашем случае условие будет заключаться в том, что произведение 3 * K меньше числа N.

Для нахождения максимального значения K мы будем увеличивать это число на каждой итерации цикла. Для этого мы будем просто увеличивать переменную K на единицу на каждой новой итерации.

Кроме того, мы будем считать еще одну переменную — maxK. Эта переменная будет хранить максимальное значение K, которое удовлетворяет неравенству 3 * K < N.

Основное решение задачи будет заключаться в следующем алгоритме:

1. Получение значения числа N;
2. Установка начального значения K как 0;
3. Установка начального значения maxK как 0;
4. Запуск цикла while:
4.1 Если произведение 3 * K меньше числа N, текущее значение K становится максимальным значением maxK;
4.2 Увеличение текущего значения переменной K на 1;
5. Вывод на экран найденного максимального значения K, которое удовлетворяет неравенству 3 * K < N.

Давайте рассмотрим это решение подробнее:

using System;



public class Program

{

    public static void Main()

    {

        // Получение значения числа N

        int N = int.Parse(Console.ReadLine());

        

        // Начальные значения

        int K = 0;

        int maxK = 0;

        

        // Запуск цикла while

        while (3 * K < N)

        {

            // Если произведение 3 * K меньше числа N, текущее значение K становится максимальным значением maxK

            if (3 * K < N)

            {

                maxK = K;

            }

            

            // Увеличение текущего значения переменной K на 1

            K++;

        }

        

        // Вывод на экран найденного максимального значения K, которое удовлетворяет неравенству 3 * K < N.

        Console.WriteLine(maxK);

    }

}

В данном решении мы сначала получаем значение числа N, чтобы использовать его в цикле. Далее мы устанавливаем начальные значения переменных K и maxK как 0.

Запускаем цикл while и выполняем проверку условия: произведение 3 * K не должно превышать число N. Если это условие выполняется, то мы присваиваем значение K переменной maxK.

Затем мы увеличиваем значение переменной K на единицу, чтобы продолжить итерации цикла и проверку условия. Когда это условие перестанет выполняться, цикл закончит свою работу.

Наконец, мы выводим на экран найденное максимальное значение K, которое удовлетворяет неравенству 3 * K < N.

Таким образом, мы получили решение задачи, которое можно использовать для нахождения максимального значения K, удовлетворяющего заданному условию.

⚠️Зарепортить пост!

Чтобы оставить комментарий, необходимо авторизоваться.

Задай любой вопрос нейросети!

она справится с любой поставленной задачей быстрее чем поиск в Яндекс.

Для того, чтобы задать вопрос нейросети, необходимо войти на сайт.

Последние вопросы

(c) ChatGPT по русски 2023. Все права защищены. При обнаружении неправомерного контента пишите на [email protected]

Понравилась статья? Поделить с друзьями:
  • Как найти среднее количество дней в месяце
  • Как найти объем параллелепипеда если известна диагональ
  • Installation failed что за ошибка как исправить
  • Хрипит один динамик в ноутбуке как исправить
  • Ошибка u051 canon mp220 как исправить