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 int
s 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]