Участник:Michael.13.Tokarev
Материал из Викиверситет
| Репутация = «?» ; Вклад = «0,00» | |
|---|---|
| Оставьте свою благодарность/предупреждение участнику: | |
|
|
|
| Выразите одобрение действий участнику или возражение против них: | |
|
|
|
| Michael.13.Tokarev (обс. • email • вклад • стат. • глоб. инфо. • журналы • блокировки) |
Основной вклад: 3 × 0.5 = 1.5 Социальный вклад: 0 × 0.2 = 0 Административный вклад: 0 × 0.3 = 0 Итого: 1.5 |
Python 2.6 [править]
- Изучил курс Python, в том числе Tkinter.
- Выражаю благодарность автору курса за собранный в единый курс и переведенный с английского языка материал, а также ссылки на иные статьи для полее подробного ознакомления с выбранной частью статьи.
- Качество материала достаточно высокое, грубых ошибок мало. Мелкие ошибки, неточности и неполные части программ или отсутствие примеров (в том числе отсутствие примера как вызывать модуль) заставляют лучше разобраться в материале и немного поэкспериментировать.
- Неплохо было бы почистить статью - сделать ее более наглядной. К примеру когда в уроке требуется освоить использование встроенного модуля, лучше в начале статьи указать, что ко всем выбранным примерам программ надо приписать пару строк вроде
from Tkinter import * root = Tk()
а в конце дописать
root.mainloop()
а не к каждой программе приписывать эти строчки. и обязательно 1 пример, как все это должно выглядеть.
- Другой вариант - к каждой программе дописать полный список всех импортируемых модулей. Пока что во многих программах этих строчек нет.
- Неясно, как запускать isympy. В консоли, как? isympy загружается отдельно от стандартных модулей или он встроен?
- В одном месте курса я заметил отсутствие необходимой части кода, а в следующем уроке он уже был. Признаться, я долго мучался, пытаясь найти ошибку, вока не перешел к следующему уроку. Хотелось бы, чтобы таких неприятностей не было вообще. В общем, более последовательное изложение материала было бы очень приятно видеть.
- Возможно, я буду выкладывать в "Уточнения" все замеченные мной неточности и отсутствие частей кода.
Уточнения [править]
- 12.5 Вложенные словари.
- Проблема - представлены неверные значения на выходе.
- Решение - ниже указаны верные значения.
Mean value of property A = 10.1667 Mean value of property B = 0.0344 Mean value of property C = 2015 Mean value of property D = 102.133
- 12.6 Сравнение стоимости акций.
- Проблема 1: Отсутствие компании Sun на сайте.
- Решение 1: Компания Sun прекратила свое существование и вошла в состав компании Oracle. Именно Oracle нужно искать. И в тексте программы изменить Sun на Oracle соответственно. Кроме того, файл данных с сайта для компании Oracle должен сохраняться не как stockprices_Sun.csv, а как stockprices_Oracle.csv.
- Проблема 2: Компания Oracle существует не с января 1988, а с марта 1988 года.
- Решение 2: Нужно указать этот факт по аналогии с указанным в статье примером:
# для Oracle мы должны начать с марта 1988: mar88 = dates['MS'].index('1988-03') x['Oracle'] = range(mar88, mar88 + len(prices['Oracle']), 1)
Тогда вся программа будет выглядеть следующим образом:
# -*- coding: cp1251 -*- def read_file(filename): infile = open(filename, 'r') infile.readline() # читаем заголовки столбцов dates = []; prices = [] for line in infile: columns = line.split(',') # разделяем по запятой date = columns[0] date = date[:-3] # пропускаем день месяца (три последних цифры) price = columns[-1] # нам нужен только последний столбец dates.append(date) prices.append(float(price)) # не забываем конвертировать infile.close() dates.reverse() # возвращаем порядок: от более старых к новым prices.reverse() # и соответственно цены return dates, prices dates = {}; prices = {} d, p = read_file('stockprices_Oracle.csv') dates['Oracle'] = d; prices['Oracle'] = p d, p = read_file('stockprices_Microsoft.csv') dates['MS'] = d; prices['MS'] = p d, p = read_file('stockprices_Google.csv') dates['Google'] = d; prices['Google'] = p data = {'prices': prices, 'dates': dates} # нормировка цен: norm_price = prices['Oracle'][0] prices['Oracle'] = [p/norm_price for p in prices['Oracle']] norm_price = prices['MS'][0] prices['MS'] = [p/norm_price for p in prices['MS']] jan05_MS = prices['MS'][dates['MS'].index('2005-01')] jan05_Oracle = prices['Oracle'][dates['Oracle'].index('2005-01')] norm_price = prices['Google'][0]/max(jan05_MS, jan05_Oracle) prices['Google'] = [p/norm_price for p in prices['Google']] # обозначаем "x" точки для построения графиков x = {} x['MS'] = range(len(prices['MS'])) # для Oracle мы должны начать с марта 1988: mar88 = dates['MS'].index('1988-03') x['Oracle'] = range(mar88, mar88 + len(prices['Oracle']), 1) # для Google мы должны начать с января 2005: jan05 = dates['MS'].index('2005-01') x['Google'] = range(jan05, jan05 + len(prices['Google']), 1) import matplotlib.pyplot as plt plt.plot(x['MS'], prices['MS'], 'g-') plt.plot(x['Oracle'], prices['Oracle'], 'y-') plt.plot(x['Google'], prices['Google'], 'r-') plt.legend(['Microsoft', 'Oracle', 'Google'], loc=0) plt.grid() plt.show()