Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 20, 2017 11:19:19

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Тебе нужно поставить пакет заголовков от Pyaudio. Попробуй так:

 sudo apt-get install portaudio19-dev
pip install --allow-unverified=pyaudio pyaudio

Офлайн

#2 Июнь 29, 2017 09:45:37

ilyatr
Зарегистрирован: 2017-06-29
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Народ, помогите разобраться, начал изучать программирование (сейчас мой уровень ниже 0)
Там есть самостоятельное задание написать программку для решения квадратных уравнений. Никак не получается у меня это сделать, пробовал разные варианты. В итоге вот на чем остановился:

 def kvadrat(u):
	n=u+2
	prompt1 = "введите коэффициент a"
	a = input(prompt1)
	prompt2 = "введите коэффициент b"
	b = input(prompt2)
	prompt3 = "введите коэффициент с"
	c = input(prompt3)
	D = b**2 - 4*a*c
	if D<0:
		return none, none
	import math
	x1 = (-b + math.sqrt(D))/2*a
	x2 = (-b - math.sqrt(D))/2*a
	return x1, x2

При исполнении программы получаю следующие ошибки:
 kvadrat(1)
введите коэффициент a1
введите коэффициент b3
введите коэффициент с2
Traceback (most recent call last):
  File "<pyshell#41>", line 1, in <module>
    kvadrat(1)
  File "<pyshell#40>", line 9, in printroots
    D = b**2 - 4*a*c
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

не совсем понимаю что не так. получается что коэффициентам а b и с он присваивает не только введенное значение но и текст, поэтому тип становится текстовым и он не может выполнять математические вычисления?
язык - питон.
Для меня важно не получить готовую программу, а понять что я делаю не так и как правильно.
Если посоветуете какую то литературу на русском, тоже буду признателен.

Отредактировано ilyatr (Июнь 29, 2017 10:14:05)

Офлайн

#3 Июнь 29, 2017 09:52:51

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Он же очень понятно все пишет
неподдеживаемый тип(ы) операции (в данном случае – для возведения в степень).

В общем, a,b,c это строки, когда вы их ввели с клавиатуры, а нужно чтобы они были числами, чтобы делать математические операции над ними.

Офлайн

#4 Июнь 29, 2017 10:15:26

ilyatr
Зарегистрирован: 2017-06-29
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

scidam
Он же очень понятно все пишетнеподдеживаемый тип(ы) операции (в данном случае – для возведения в степень).В общем, a,b,c это строки, когда вы их ввели с клавиатуры, а нужно чтобы они были числами, чтобы делать математические операции над ними.
а почему они становятся строками? нужно чтобы после вывода “введите коэффициент a” значение a вводилось с новой строки?

Офлайн

#5 Июнь 29, 2017 10:20:05

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

Вопросы от новичков.

ilyatr
а почему они становятся строками?
Потому что функция input() возвращает строки.

Офлайн

#6 Июнь 29, 2017 13:50:59

ilyatr
Зарегистрирован: 2017-06-29
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

krok64
разобрался, в кода перед input нужно было написать тип

a=int(input(prompt1))

спасибо.

на форуме не нашел книг на русском по питону. Есть только для тех кто азы знает, но это не про меня.

Офлайн

#7 Июнь 29, 2017 13:53:12

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Вопросы от новичков.

ilyatr
на форуме не нашел книг на русском по питону. Есть только для тех кто азы знает, но это не про меня.
Марк Лутц “Изучаем Python”

Офлайн

#8 Июнь 29, 2017 15:08:25

ilyatr
Зарегистрирован: 2017-06-29
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Stright
уже нашел, спасибо.

а можно как то избавится от не нужного предисловия в моем коде?

 def kvadrat(u):
n=u+2
я добавил эти строки только для того чтобы написать свою функцию, но для программы это бесполезные строки.

и теперь новая загвоздка, пытаюсь написать программу по вычислению членов последовательности.
f = 1^3+ … + n^3
пишу вот так:

 def func(n):
	if n == 1:
		return 1
	return func(n-1)**3 + func(n)**3
Но при вызове функции она выдает ошибку о превышении количества циклов.
получается я неправильно написал 3 строку?

Отредактировано ilyatr (Июнь 29, 2017 15:30:53)

Офлайн

#9 Июнь 29, 2017 15:37:48

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

Вопросы от новичков.

ilyatr
return func(n-1)**3 + func(n)**3
 return func(n-1) + n**3

Отредактировано krok64 (Июнь 29, 2017 15:42:19)

Офлайн

#10 Июнь 29, 2017 15:55:20

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Вообще, такие конструкции очень медленно выполняются на Python, попробуйте вычислить func(100)… или func(1000);
такой вариант будет много быстрей:

 func = lambda n: sum([x**3 for x in range(n)])

Отредактировано scidam (Июнь 29, 2017 15:55:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version