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

#python

Вопрос:

У меня проблема,когда я ввожу последовательность [-2,-2, -5,6,0], она выводит -2, а не 6 проблем при разрыве. Какое-либо другое решение для этого ?

 z = []  a = 0  max = 0  while True:  b = int(input("Enter a Number ").strip())  z.append(b)  if b == 0:  break  while a lt; len(z) :  if z[a] gt; z[a 1]:  max = z[a]  break  a  = 1  print(f"the max number is {max} his appearence is :{z.count(max)}")  

Комментарии:

1. если я не использую break, появится ошибка, в которой будет написано IndexError: индекс списка вне диапазона

2. это связано с последней итерацией второго цикла while, где a=len(z)-1 . в if том, что вы ищете z[a 1] , что выходит за рамки дозволенного. обновите свой код, чтобы вам это не понадобилось break

3. должен ли он также выводить 0, если это было наибольшее число?

4. Нет, он должен удалить его из списка

Ответ №1:

Избегайте использования ключевого слова, такого как «max», в качестве переменной. Кроме того, как упоминалось в комментариях, проверьте свою логику цикла while. Вот решение вашей проблемы, если вы согласны с использованием функций/методов.

 z = [] while True:  b = int(input("Enter a Number ").strip())  z.append(b)  if b == 0:  break max_value = max(z) index_of_max = z.index(max(z)) print(f"the max number is {max_value} his appearence is :{index_of_max}")  

Комментарии:

1. index_of_max = z.index(max_value) было бы лучше

2. я сделал это z = [], пока верно: b = int(ввод(«Введите число «).полоса()) z.добавить(b) , если b == 0: перерыв z.удалить(0) максимальное значение = максимальное(z) печать(f»максимальное число {максимальное значение} его внешний вид :{z.количество(максимальное значение)}»)