Найти - Пользователи
Полная версия: Вопросы от новичков.
Начало » Python для новичков » Вопросы от новичков.
1 2 3 4 5 6 7 8 9 10 None 28 29 30 31
krok64
Тебе нужно поставить пакет заголовков от Pyaudio. Попробуй так:
 sudo apt-get install portaudio19-dev
pip install --allow-unverified=pyaudio pyaudio
ilyatr
Народ, помогите разобраться, начал изучать программирование (сейчас мой уровень ниже 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 и с он присваивает не только введенное значение но и текст, поэтому тип становится текстовым и он не может выполнять математические вычисления?
язык - питон.
Для меня важно не получить готовую программу, а понять что я делаю не так и как правильно.
Если посоветуете какую то литературу на русском, тоже буду признателен.
scidam
Он же очень понятно все пишет
неподдеживаемый тип(ы) операции (в данном случае – для возведения в степень).

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

a=int(input(prompt1))

спасибо.

на форуме не нашел книг на русском по питону. Есть только для тех кто азы знает, но это не про меня.
Stright
ilyatr
на форуме не нашел книг на русском по питону. Есть только для тех кто азы знает, но это не про меня.
Марк Лутц “Изучаем Python”
ilyatr
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 строку?
krok64
ilyatr
return func(n-1)**3 + func(n)**3
 return func(n-1) + n**3
scidam
Вообще, такие конструкции очень медленно выполняются на Python, попробуйте вычислить func(100)… или func(1000);
такой вариант будет много быстрей:

 func = lambda n: sum([x**3 for x in range(n)])
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB