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
2
You are using comparing instead of assignment
if n > maxN:
maxN = n
answered May 1, 2020 at 23:05
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
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
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 of2 < 10) because"2" > "1"and the presence of"0"after the"1"is irrelevant - for
"2"and"20","2" < "20"(same as2 < 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
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]
