0 / 0 / 0
Регистрация: 09.07.2019
Сообщений: 28

Работа с таблицами Exel (в мини проекте)

04.08.2019, 23:45. Показов 2297. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import xlrd
import xlwt
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter, column_index_from_string
'''
Считывание таблицы
'''
file_obj = input('Введите путь к файлу: ') # /Users/markgurianov/Downloads/TMRCA.xlsx
workbook = load_workbook(filename=file_obj)
sheet = workbook.worksheets[0]
'''
Проверка правильности считывания
'''
row = int(input('Введите количество строк в таблице: '))
column = int(input('Введите количество столбцов в таблице: '))
if row == sheet.max_row and column == sheet.max_column:
    print('Чтение файла завершилось верно')
else:
    print('Ошибка чтения файла!!!')
'''
Получение дополнительных данных
'''
base_index = int(input('Введите индекс гаплотипа: '))
age = float(input('Введите средний возраст покаления: '))
 
'''
Подсчитаем квадрат разности всех локусов в гаплоидных наборах относительно базового
'''
row = 1
column = 2
for row1 in range(sheet.max_row):
    diff_square = 0
    if row1 != base_index:
        for column1 in range(sheet.max_column):
            a = base_index
            b = sheet.cell(row=row1, column=column1).value
            diff_square += (a - b) ** 2
    else:
        continue
    print(str(diff_square))
 
workbook.save(file_obj)
Миниатюры
Работа с таблицами Exel (в мини проекте)  
Вложения
Тип файла: xlsx TMRCA.xlsx (16.2 Кб, 1 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.08.2019, 23:45
Ответы с готовыми решениями:

Работа с таблицами Exel (в мини проекте) v2.0
Здравствуйте, попробовал написать отдельно программу для сортировки данных по столбцу и она даже запустилась, выдав верный результат. Но,...

Работа с таблицами Exel (в мини проекте) v2.1
Почему-то после строки "Проверьте данные:" не выводятся данные, а так же какая-то ошибка свойственная скорей строкам типа: a = 'не знаю как...

Работа с таблицами Exel
Как исправить ошибку? Код: import xlrd, xlwt from openpyxl import load_workbook from openpyxl.utils import get_column_letter,...

12
 Аватар для Vigi
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
05.08.2019, 06:41
В циклах range нужно не от 0 делать
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
05.08.2019, 08:00
MarkStav, и снова повторюсь -как ты перевел и понял это исключение?
Совет - срочно надо почитать и освоить что такое дебаггер, начать его использовать прямо сейчас, в пичарме он очень удобен.
0
0 / 0 / 0
Регистрация: 09.07.2019
Сообщений: 28
05.08.2019, 11:49  [ТС]
Welemir1, эту проблему решил. Спасибо!
Подскажите пожалуйста, а есть ли способ проверить ячейку на наличие значения в ней?
Python
1
2
3
4
5
if sheet.cell(row=row1, column=column1).value == None:
    continue
else:
    calculation = ((a - b) ** 2) / 2
    diff_square += calculation
Добавлено через 15 минут
Всё, нашел способ)
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
05.08.2019, 12:01
MarkStav, совет - прежде чем писать на форум:
1) думаем
2) используем дебаггер (если ошибка)
3) читаем документацию
4) ищем в гугле
5) ищем на киберфоруме
6) задаем вопрос с чистым сердцем
обычно дальше 4 пункта не должно заходить!
0
0 / 0 / 0
Регистрация: 09.07.2019
Сообщений: 28
05.08.2019, 13:25  [ТС]
Код:
Python
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import xlrd
import xlwt
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter, column_index_from_string
'''
Считывание таблицы
'''
file_obj = input('Введите путь к файлу: ') # /Users/markgurianov/Downloads/TMRCA.xlsx
workbook = load_workbook(filename=file_obj)
sheet = workbook.worksheets[0]
'''
Проверка правильности считывания
'''
row = int(input('Введите количество строк в таблице: '))
column = int(input('Введите количество столбцов в таблице: '))
if row == sheet.max_row and column == sheet.max_column:
    print('Чтение файла завершилось верно')
else:
    print('Ошибка чтения файла!!!')
'''
Получение дополнительных данных
'''
booling = 'н'
while booling == 'н':
    base_index = int(input('Введите индекс гаплотипа: '))
    print('Проверьте данные:')
    print('| ', end='')
    for column1 in range(3, sheet.max_column + 1):
        print('{: ^ 4} | '.format(sheet.cell(row=base_index, column=column1).value), end='')
        # print(str(sheet.cell(row=base_index, column=column1).value), end=' |')
    print()
    booling = input("Правильно ? (д/н): ")
    if booling == 'д':
        break
age = float(input('Введите средний возраст покаления: '))
'''
const
'''
mu = 0.0026
'''
Подсчитаем TMRCA в гаплоидных наборах относительно базового 
'''
new_column = sheet.max_column + 1
for row1 in range(2, sheet.max_row + 1):
    diff_square = 0
    count_locus = 0
    if row1 != base_index:
        for column1 in range(3, sheet.max_column + 1):
            a = int(sheet.cell(row=base_index, column=column1).value)
            b = sheet.cell(row=row1, column=column1).value
            if sheet.cell(row=row1, column=column1).value in [None, 'None', 'NoneType']:
                continue
            else:
                calculation = ((a - int(b)) ** 2) / 2
                diff_square += calculation
                count_locus += 1
    else:
        continue
    average_value = diff_square / count_locus
    TMRCA = age * (average_value / mu)
    coordinate = get_column_letter(new_column) + str(row1)
    sheet[coordinate] = TMRCA
 
workbook.save(file_obj)
Ошибка:
Traceback (most recent call last):
File "/Users/markgurianov/Documents/Python/main.py", line 49, in <module>
a = int(sheet.cell(row=base_index, column=column1).value)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

Отработал ваши 6 пунктов, но исправить сам не смог, уже встречал раньше эту ошибку и исправил этой проверкой
Python
1
if sheet.cell(row=row1, column=column1).value in [None, 'None', 'NoneType']:
На случай, если захотите запустить:
Введите путь к файлу: /Users/markgurianov/Downloads/TMRCA.xlsx
Введите количество строк в таблице: 113
Введите количество столбцов в таблице: 19
Чтение файла завершилось верно
Введите индекс гаплотипа: 2
Проверьте данные:
| 14 | 14 | 18 | 23 | 11 | 16 | 13 | 11 | 13 | 11 | 10 | 14 | 19 | 14 | 16 | 22 | 12 |
Правильно ? (д/н): д
Введите средний возраст покаления: 31.5
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
05.08.2019, 13:29
Цитата Сообщение от MarkStav Посмотреть сообщение
Отработал ваши 6 пунктов
сомневаюсь!
и снова моя коронка при общении с тобой - как ты понял нижеследующее?
Цитата Сообщение от MarkStav Посмотреть сообщение
int() argument must be a string, a bytes-like object or a number, not 'NoneType'
и переведя это что мы узнаем о вызове
Цитата Сообщение от MarkStav Посмотреть сообщение
sheet.cell(row=base_index, column=column1).value
? (подсказка -юзай пункт 1 из моей шпаргалки)
0
0 / 0 / 0
Регистрация: 09.07.2019
Сообщений: 28
05.08.2019, 13:33  [ТС]
1) Ошибка связана с тем, что значение пустой ячейки нельзя преобразовать в тип int
2)sheet.cell(row=base_index, column=column1).value - возвращает значение выбранной ячейки
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.08.2019, 13:57
Лучший ответ Сообщение было отмечено MarkStav как решение

Решение

Цитата Сообщение от MarkStav Посмотреть сообщение
sheet.cell(row=base_index, column=column1).value - возвращает значение выбранной ячейки
У вас ошибка в 49 строке, а вы проверяете на None (кстати, неправильно) вообще в другой.

Не делайте так.
a = int(sheet.cell(row=base_index, column=column1).value)
Python
1
2
3
a = sheet.cell(row=base_index, column=column1).value
if a is not None: # не None
    ....
И так везде, где может быть None. Сначала получили, записали в переменную, проверили переменную (а не снова получили как в 50-51 строках).
1
0 / 0 / 0
Регистрация: 09.07.2019
Сообщений: 28
05.08.2019, 14:03  [ТС]
Спасибо, теперь работает
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
05.08.2019, 14:36
Garry Galler, такой образовательный процесс прервал, он ведь завтра снова тему создаст потому что не читает исключений и не хочет разбираться

Цитата Сообщение от Garry Galler Посмотреть сообщение
if a is not None: # не None
почему не
Python
1
if a:
0
0 / 0 / 0
Регистрация: 09.07.2019
Сообщений: 28
05.08.2019, 14:44  [ТС]
При if a: по идее будет True при наличии значения и False если ячейка пустая
Вроде так
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.08.2019, 14:45
Цитата Сообщение от Welemir1 Посмотреть сообщение
такой образовательный процесс прервал,
Да, согласен, зря поспешил :-)

Цитата Сообщение от Welemir1 Посмотреть сообщение
if a:
Это если нам вообще не важно: None, 0 или ''. А если важно, тогда уж is None.
Но у ТС непонятно - что у него там в ячейках может быть. Поэтому пусть сам думает какой вариант для него правильнее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.08.2019, 14:45
Помогаю со студенческими работами здесь

Работа с двумя таблицами, мини база данных
Создаваемое приложение должно по каждому клиенту автосервиса хранить следующие сведения: Ф.И.О.; Марка и модель автомобиля; история...

Работа с Word и Exel через макрос, который запускается в Exel
Есть задача: проводятся расчеты в Эксель и из него открывается документ Ворд(эта часть работает), копируется таблица из Эксель и...

Как в листе Exel на форме в проекте убрать его меню при активизации?
Всем привет! Ребята, меня интересует такой вопрос. Как в листе Exel на форме в проекте убрать его меню при активизации и как сделать...

Работа в игровом проекте. Работа с php. Работа с платежными системами. Работа с базами данных
Работа в игровом проекте. Работа с php. Работа с платежными системами. Работа с базами данных. Стоимость: Договорная Срок...

Работа с exel в QT creator
Здравствуйте! Разрабатываю приложение для себя, так сказать учусь, у меня есть exel-файл, где храню информацию, вводимую пользователем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru