Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Открыть новую тему     Написать ответ в эту тему

Adm10



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесь обсуждается всё, что связано с использованием Python: программирование, библиотеки, ресурсы и другие вопросы

Python


Python - высокоуровневый язык программирования общего назначения с динамической типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ

С чего начать?
Простой, понятный и вместе с тем грамотный ресурс на русском языке: pythonworld.ru + самоучитель
Библия PEP8

Всего записей: 35 | Зарегистр. 13-10-2006 | Отправлено: 15:48 16-06-2007 | Исправлено: shrmn, 22:22 07-03-2021
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
жабу
 
Добавлено:
 
 
тьфу ты, ответил...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 11:08 18-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кто-нибудь может помочь собрать вот это чудо из сорсов?
http://www.silx.org/
 
только саму  silx:
https://github.com/silx-kit/silx
https://pypi.org/project/silx
 
win32
python 3.8 (32-битный)
 
рip не ставит, колёс под меня нет :)
чё-то я завис...
 
и ещё вопрос по поводу установки пакетов:
 
когда установщик на автомате компилит свои *.с,
то не видит мой компилятор, и всегда ему надо MS VC 14.0 (у меня 16.0)
и в корне болтается "vcruntime140.dll" -- явно под 14-ую вер.
вроде локализовал место где надо что-то изменить, но питон-опыт == 0
_msvccompiler.py
msvccompiler.py
здесь что ли? что?
или придётся ставить 2015-ю студию?
 
короче и тут завис :)
 
заранее спасибо...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 14:37 20-11-2019 | Исправлено: akaGM, 14:41 20-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пока вымучил промежуточное решение --
даунгрейд к версии 3.75, для которой есть все вин32 и амд64-колёса...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 21:17 20-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть текстовый файл данных со строками вида:
10.123456  5.500000E+03  7
как по-быстрому его вчитать? :)
в данном примере хотя бы одну строку в переменные d e k без всяких циклов,
строки что ли форматно конвертировать?

Код:
filename = "test.dat"
a = 10.123456
b = 5.5e+03
c = 7
d = 0.0
e = 0.0
k = 0
 
file = open(filename, "wt")
str = "%f %E %i\n" % (a, b, c)
file.write(str)
file.close()
 
file = open(filename, "rt")
str = file.readline()
file.close()
print(str, end='')

 
и что, в питоне невозможны
write(file, a, b, c) / read(file, a, b, c)  как та же print()?

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 01:33 27-11-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
write(file, a, b, c) / read(file, a, b, c)  как та же print()?

write можно, сами написали, а read нет. но есть https://gist.github.com/ysangkok/3875529

Цитата:
 and am not quite sure if people will need all of scanf's features in typical Python programming.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:19 27-11-2019 | Исправлено: Mavrikii, 02:21 27-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
что мы сами написали?

Код:
Traceback (most recent call last):
  File "fileio_test.py", line 13, in <module>
   file.write(a, b, c)
TypeError: write() takes exactly one argument (3 given)

 
Добавлено:
 
 
короче, за scanf() спасибо,
а если ещё подаришь printf(), то я буду счастлив как удав питон...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 12:53 27-11-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
что мы сами написали?

file.write("%f %E %i\n" % (a, b, c))
Или не об этом речь?

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 15:38 27-11-2019 | Исправлено: Mavrikii, 15:41 27-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
да, да, об этом, мы сами написали...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 16:10 27-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

никто не знает как в matplotlib plot_surface() убрать отрисовку краёв-разделителей полигонов?
"как в Matlab"
 
plot_surface(x, y, z, cmap=cmap, edgecolor=None)
 
не катит, в мануалах-инструкциях-примерах пока не нашёл...
 
 
Добавлено:
axes.plot_surface(x, y, z, rstride=1, cstride=1, cmap=cmap, edgecolor=None, linewidth=None, antialiased=False)
 
получился полный тормоз...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 18:32 27-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
стрёмный какой-то язык...
 
дано:
тестовый файл простой структуры:
Код:

M N              ; число строк и столбцов, int int
x1 x2 ... xM     ; М значений х, double
y1 y2 ... yN     ; N значений y, double
z11 z12 ... z1N  ; MxN значений z, (M строк по N столбцов), double
z21 z22 ... z2N
...
zM1 zM2 ... zMN  ; z[N,M]

 
чтение такого файла реализовано 1001 раз ровно на 4-х ЯП
после двухдневного изучения питона пришёл к выводу, что начиная со второй
строки придётся делать посимвольное чтение с дальнейшей конвертацией в float
 
есть какие-нибудь радикальные соображения/советы?
//промежуточную конвертацию в другие известные форматы не предлагать
 
заранее...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 21:17 29-11-2019 | Исправлено: akaGM, 21:23 29-11-2019
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе  время, akaGM
После недели изучения питона приходит в голову такое решение:

Код:
 
def dataline(f):
  return f.readline().split(";")[0].strip().split()
 
result = {}
f = open ("test.dat", "r")
result["M"], result["N"] = [int(x) for x in dataline(f)]
result["X"], result["Y"] = [float(x) for x in dataline(f)], [float(x) for x in dataline(f)]
result["matrix"]=[]
for i in result["X"]:
  result["matrix"].append([float(x) for x in dataline(f)])
 
print (result)

Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 21:55 29-11-2019 | Исправлено: Alex_Piggy, 21:57 29-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
 
:)
красиво, но ни хрена не понятно...
 
тут какие-то тупле :) (tuple) используются, кот. я ещё не проходил?
можно, конечно, тупо заюзать, но хотелось бы понять...
в итоге на выходе мне нужны три массива -- одномерные X и У и двумерный Z...
как бы их тут получить в явном виде?
потому что от идексации типа result["X"] я просто офигеваю...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 22:07 29-11-2019
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
akaGM
Вроде нет... Словарь (dict, set, "{}") и лист/массив (list, "[]").

Код:
 
def dataline(f):  
  return f.readline().split(";")[0].strip().split()  
   
f = open ("test.dat", "r")  
M,N = [int(x) for x in dataline(f)]
X, Y = [float(x) for x in dataline(f)], [float(y) for y in dataline(f)]  
matrix=[]  
for i in X:  
  matrix.append([float(x) for x in dataline(f)])  
   
print (X)
print (Y)
print (matrix)
 

UPD. Прошу прощения, отправилось недописанное и непроверенное. Проверяю. OK.

Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 22:12 29-11-2019 | Исправлено: Alex_Piggy, 22:21 29-11-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
потому что от идексации типа result["X"] я просто офигеваю

и зря, ассоциативные массивы (хэши) очень удобная вещь.
 
а для простоты - считайте все в двумерный массив, в потом просто преобразуйте типы там, где нужно.
более того, если данные составляют именно нужное количество M и N, то первую строку даже читать не нужно.
 

Код:
with open('test.txt', 'r') as f:
    next(f)
    data = [[num for num in line.split()] for line in f]
 
data1 = [len(data[0]), len(data[1])]
data2 = [map(float, x) for x in data[:2]]
data3 = [map(float, x) for x in data[2:]]

 
но если хочется читать, то  

Код:
with open('test.txt', 'r') as f:
    data = [[x for x in line.split()] for line in f]
 
data1 = [int(x) for x in data[0]]
data2 = [map(float, x) for x in data[1:3]]
data3 = [map(float, x) for x in data[3:]]

 
и подразумевается, конечно же, что
Цитата:
; число строк и столбцов, int int
лишь внесенный вами комментарий.
 

Цитата:
(tuple) используются, кот. я ещё не проходил

tuple это то же самое, что и массив, с разницей в том, что после его инциализации его нельзя менять (immutable)
что очень удобно для использования в качестве хэшей (ключей) в словарях (ассоциативных массивах).

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:28 29-11-2019 | Исправлено: Mavrikii, 22:40 29-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
split(";")
точка с запятой из-за этого:
Цитата:
; число строк и столбцов, int int
лишь внесенный вами комментарий.
да, это коммент, в реале в файле ничего лишнего нет...
 
что такое открытая индексация data[2:]?
 
 
господа, а можно всё свести воедино и оформить в одну рабочую функу?
 
и да, спасибо за внимание и помощь...
 
Добавлено:

Цитата:
и зря, ассоциативные массивы (хэши) очень удобная вещь.  
не сомневаюсь, но для этого надо знать чтО это и для чего пригодно...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 23:21 29-11-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
господа, а можно всё свести воедино и оформить в одну рабочую функу?

и что вам мешает это сделать? код и так рабочий, всего лишь добавить определение функции и добавить табуляцию.
 

Цитата:
что такое открытая индексация data[2:]?

так же, как и во многих других языках - все элементы массива, начиная с третьего.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:24 29-11-2019 | Исправлено: Mavrikii, 23:25 29-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
и что вам мешает это сделать?
лень и скудоумие...

Цитата:
как и во многих других языках
например? рубины, хаксели, ПыХаПы, эRы- и другие D- не называть...
 
Добавлено:
 
 
и ещё...
 
присоветуйте, плиз, книжечку по сабжу посуше, для неначинающих, так сказать...
но с упором на основу, а не на ООП и приложения...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 23:35 29-11-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
другие D- не называть

значит вам не повезло знать другие.. Matlab/Octave, S/R, Algol, Fortran 90, Cobra, Go, Julia...
 

Цитата:
лень и скудоумие...

прочитать раз о функциях в питоне и все становится очевидным.
 

Код:
def func(filename):
   with open(filename, 'r') as f:
      data = [[x for x in line.split()] for line in f]
      f.close()
      return [
         [int(x) for x in data[0]],
         [map(float, x) for x in data[1:3]],
         [map(float, x) for x in data[3:]]
      ]

код не обрабатывает ошибки открытия файла, но и это можно добавить.
 
ps: можно вернуть не один массив, а туполь (по русски называется кортеж) (просто заменить внешние [] на ()). получать разные части можно через  
data1, data2, data3 = func(filename)

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:05 30-11-2019 | Исправлено: Mavrikii, 00:14 30-11-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
значит вам не повезло знать другие.. Matlab/Octave, S/R, Algol, Fortran 90, Cobra, Go, Julia...  
Фортран (вот именно что начиная с 90-ого), С, Паскаль, Модула -- ну да не повезло...
есть многое на свете, друг Маврикио...
 
кстати, не припомню чтоб на алгoле писалось А[1:], хотя и не писал на нём :)
 

Цитата:
прочитать раз о функциях в питоне и все становится очевидным.
почитаю...
я только что с откровением узнал, что двухмерник адресуется как [0][0], а не [0,0]...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 00:25 30-11-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
кстати, не припомню чтоб на алгoле писалось А[1:], хотя и не писал на нём

https://en.wikipedia.org/wiki/ALGOL_68#struct,_union_&_%5B:%5D:_Structures,_unions_and_arrays

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:28 30-11-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru