Форум сайта python.su
Здравствуйте! не работает программа. Вот задача:
А вот мой код:
import math b=[] while True: try: a=input('Введите число: ') if a == True: b.append(a) s=int(len(b)) z=int(b) summa=math.fsum(z) sred = z/s z.sort() else: print('Введенные числа:', b, "Количество чисел", s , 'Среднее число = ', sred, "Минимальное число = ", z[0], "Максимальное число = ", z[-1]) break except ValueError: print('Неверно введено число или оно не целое') continue
Офлайн
TypeError: int() argument must be a string or a number, not ‘list’
Офлайн
user437Симптомы ?
не работает программа.
Офлайн
А у меня никаких ошибок нет при ее запуске…
Питон у меня 3.4.
После нажатия Enter должна ведь программа заканчиваться и выводить результат, а у меня она просто опять показывает – Введите число.
Офлайн
Ты c PHP переходишь?
import math b=[] while True: try: a=input('Введите число: ') if a != '': b.append(int(a)) else: s=len(b) summa = sum(b) sred = summa/s print('Введенные числа:', b, "Количество чисел", s, 'Среднее число = ', sred, "Минимальное число = ", min(b), "Максимальное число = ", max(b)) break except ValueError: print('Неверно введено число или оно не целое') continue
Отредактировано nokados (Окт. 4, 2014 20:36:48)
Офлайн
спасибо)
нет, я раньше паскаль немного изучал, а сейчас питон начал изучать.
Почему не создал переменные, а уже их используешь?а почему нельзя как у меня? у тебя ведь тоже они внутри цикла созданы.
print('Введенные числа:', b, “Количество чисел”, s , ‘Среднее число = ’, sred, “Минимальное число = ”, z, “Максимальное число = ”, z)
Эти переменные даже не создадутся, когда в первой итерации провалится условие a == True
Создай их до цикла или вообще не создавай, а перенеси в блок else: ведь только там они и нужны
Зачем math, если есть sum()?не знал о ее существовании, как и о min и max.
Зачем превращать число (len(b)) в число, если оно и так число ?
z=int(b) Почему ты преобразовываешь массив в число?
Офлайн
лист это почти массив.Пусть
L = [1,2,3]
>>> len(L) 3 >>> int(L) Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> int(L) TypeError: int() argument must be a string or a number, not 'list'
user437Питон же интерпритируемый.
а почему нельзя как у меня? у тебя ведь тоже они внутри цикла созданы.
import math b=[] while True: try: a=input('Введите число: ') if a != '': b.append(int(a)) else: s=len(b) if s == 0: print('Ничего не передано') break #или continue, чтобы что-нибудь ввести summa = sum(b) sred = summa/s print('Введенные числа:', b, "Количество чисел", s, 'Среднее число = ', sred, "Минимальное число = ", min(b), "Максимальное число = ", max(b)) break except ValueError: print('Неверно введено число или оно не целое') continue
Отредактировано nokados (Окт. 4, 2014 21:15:00)
Офлайн
Изначально у тебя нет переменных. Предположим, что пользователь сразу нажал Enter. Тогда вылезет ошибка, что такой переменной нет.там мы же ввод записываем в ссылку а.
лист это почти массивчто касаемо ссылок объектов – строковый тип только у строк, а у всех остальных - числа, списки и др. коллекции относятся к числовым?
Офлайн
user437В этом то и проблема. Давай я побуду в роли интерпритатора и разберу все тобою/мною написанное по строкам, если переменные объявляются в блоке if a != '':
там мы же ввод записываем в ссылку а.
я читал, что переменные в любом месте можно создать
b=[]
while True:
try:
a=input('Введите число: ')
if a != '':
... else: print('Введенные числа:', b, "Количество чисел", s, 'Среднее число = ', sred, "Минимальное число = ", min(b), "Максимальное число = ", max(b))
'[]'
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
print(s)
NameError: name 's' is not defined
user437Я даже не понял, что значит эта фраза.
что касаемо ссылок объектов – строковый тип только у строк, а у всех остальных - числа, списки и др. коллекции относятся к числовым?
Отредактировано nokados (Окт. 4, 2014 23:16:45)
Офлайн
nokadoselse: s=len(b) summa = sum(b) sred = summa/s print('Введенные числа:', b, "Количество чисел", s, 'Среднее число = ', sred, "Минимальное число = ", min(b), "Максимальное число = ", max(b)) break
Офлайн