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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Hinzor



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
спасибо попробую разобраться.
 
Добавлено:
Большое спасибо, попробую разобраться.
 
Добавлено:
статью прочитал, там было интересное решение предложено: x = x+x - x;
Ращрешите еще поинтересоваться:
 
import math
 
def my_sqrt(a):
x = 1.                  # почему здесь нужна точка?
y = a
eps = 1e-12           # что означает 1е-12? я не вижу етого дальше в коде
while abs(x - y) > eps:
x = (x + y) / 2.0
y = a / x
return x
 
Большое спасибо

Всего записей: 45 | Зарегистр. 16-08-2007 | Отправлено: 16:23 03-03-2020
Mavrikii

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

Цитата:
почему здесь нужна точка

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

Цитата:
что означает 1е-12? я не вижу етого дальше в коде

значит не читали ссылку.
погрешность сравнения двух чисел в

Цитата:
while abs(x - y) > eps:


Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 19:08 03-03-2020 | Исправлено: Mavrikii, 19:16 03-03-2020
Hinzor



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу прощения но тут я застрял опять:
Напишите функцию с именем has_duplicates, которая принимает строковый параметр и возвращает True, если в строке есть повторяющиеся символы. В противном случае он должен вернуть False.
 
Реализуйте has_duplicates, создав гистограмму с помощью функции гистограммы выше. Вместо этого ваша реализация должна использовать счетчики в гистограмме, чтобы решить, есть ли дубликаты.
 
Написать цикл над строками в предоставленном списке test_dups. Напечатайте каждую строку в списке и выясните, есть ли в ней дубликаты, основываясь на возвращаемом значении has_duplicates для этой строки. Например, выходные данные для «aaa» и «abc» будут следующими.
 
ааа имеет дубликаты
abc не имеет дубликатов
 
Для каждой строки в test_dups выведите строку, аналогичную приведенной выше.
Напишите функцию с именем missing_letters, которая принимает строковый параметр и возвращает новую строку со всеми буквами алфавита, которых нет в строке аргумента. Буквы в возвращаемой строке должны быть в алфавитном порядке.
 
Ваша реализация должна использовать гистограмму из функции гистограммы. Следует также использовать глобальную переменную алфавит. Он должен использовать эту глобальную переменную напрямую, а не через аргумент или локальную копию. Следует зациклить буквы в алфавите, чтобы определить, какие из них отсутствуют во входном параметре.
 
Функция missing_letters должна объединить список пропущенных букв в строку и вернуть эту строку.
 
Напишите цикл над строками в списке test_miss и вызовите missing_letters с каждой строкой. Напечатайте строку для каждой строки, перечисляя пропущенные буквы. Например, для строки «aaa» вывод должен быть следующим.
 
ааа отсутствует буквы bcdefghijklmnopqrstuvwxyz
 
Если строка содержит все буквы в алфавите, в выводе должно быть указано, что используются все буквы. Например, вывод для строкового алфавита будет следующим.
 
abcdefghijklmnopqrstuvwxyz использует все буквы
 
Напечатайте строку, аналогичную приведенной выше, для каждой из строк в test_miss.
 
__________________________________________________________________________
 
alphabet = "abcdefghijklmnopqrstuvwxyz"
 
test_dups = ["zzz","dog","bookkeeper","subdermatoglyphic","subdermatoglyphics"]
 
test_miss = ["zzz","subdermatoglyphic","the quick brown fox jumps over the lazy dog"]
 
 
def histogram(s):
    d = dict()
    for c in s:
        if c not in d:
            d[c] = 1
        else:
            d[c] += 1
    return d
 
def has_duplicates():
   

Всего записей: 45 | Зарегистр. 16-08-2007 | Отправлено: 16:26 18-03-2020
Mavrikii

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

Цитата:
Прошу прощения но тут я застрял опять

что, домашку задают?
 
тут помогают, а не пишут за вас.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 21:27 18-03-2020
harrykkk



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

Цитата:
Напишите функцию с именем has_duplicates


Код:
def has_duplicates(string):
    if len(string) == len(set(string)):
        return False
    return True
 
are_there_duplicates = "asdfgghjk"
print(has_duplicates(string=are_there_duplicates))

Всего записей: 9020 | Зарегистр. 24-02-2013 | Отправлено: 21:49 18-03-2020 | Исправлено: harrykkk, 21:53 18-03-2020
Mavrikii

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

Цитата:
Напишите функцию с именем has_duplicates


Цитата:
 создав гистограмму с помощью функции гистограммы выше

тогда уж...
 

Код:
# coding: utf-8
 
alphabet = "abcdefghijklmnopqrstuvwxyz"
test_dups = ["zzz","dog","bookkeeper","subdermatoglyphic","subdermatoglyphics"]
test_miss = ["zzz","subdermatoglyphic","the quick brown fox jumps over the lazy dog"]
 
def histogram(s):
    d = {}
    for c in s:
        d[c] = c in d and d[c] + 1 or 1
    return d
 
def has_duplicates(s):
    h = histogram(s)
    return any(c in h and h[c] > 1 for c in s)
     
def missing_letters(s):
    h = histogram(s)
    return filter(lambda x: x not in h, alphabet)
 
for str in test_dups:
    print(str + ' ' + (has_duplicates(str) and 'имеет дубликаты' or 'не имеет дубликатов'))
 
for str in test_miss:
    miss = missing_letters(str)
    print(str + ' ' + (len(miss) and 'отсутствует буквы ' + miss or 'присутствуют все буквы'))

 
но неправильно все это )

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:12 18-03-2020 | Исправлено: Mavrikii, 22:21 18-03-2020
harrykkk



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

Цитата:
тогда уж

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

Всего записей: 9020 | Зарегистр. 24-02-2013 | Отправлено: 22:31 18-03-2020
Hinzor



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо большое, комент убрал, последную строку поправил. Пошло без ошибок.
Тут еще вопрос:
 
zip_zones = dict()
zip_zones[1] = ('Pittsburgh', '152')
zip_zones[2] = ('New York', '100')
zip_zones[3] = ('Dallas', '75')
zip_zones[4] = ('Los Angeles', '90')
 
 
def invert_dict(zip_zones):
     inverse = dict()
     for key in zip_zones:
         val = zip_zones[key]
         if val not in inverse:
             inverse[val] = [key]
         else:
             inverse[val].append(key)
      return inverse
 
 
  print(invert_dict(zip_zones))
 
 
должно инвертировать словарь, а выдает:
line 16
    return inverse
                 ^
IndentationError: unindent does not match any outer indentation level
 
Process finished with exit code 1
 
что тут не так? спасибо
 
 

Всего записей: 45 | Зарегистр. 16-08-2007 | Отправлено: 08:32 19-03-2020
Mavrikii

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

Цитата:
Спасибо большое, комент убрал

это не совсем коммент...
https://docs.python.org/3/reference/lexical_analysis.html#encoding-declarations
 

Цитата:
IndentationError: unindent does not match any outer indentation level

переводим и сразу станет ясно в чем дело.
 
не можем самостоятельно - копируем в https://translate.google.com/
и, очевидное сообщение о проблеме с индентацией (IndentationError) - отступами.
 
даже указано где

Цитата:
line 16
    return inverse
                 ^

строка 16, выражение return inverse находится непонятно в каком блоке из за неправильного отступа.
 

Цитата:
последную строку поправил

там нет каких то проблем в последней строке.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 08:48 19-03-2020 | Исправлено: Mavrikii, 08:54 19-03-2020
akaGM

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

Цитата:
...сообщение о проблеме с индентацией (IndentationError) - отступами.
 
...находится непонятно в каком блоке из за неправильного отступа.
пожалуй самая инновационная находка, перл, жемчужина, изюминка питона, прорыв в языкоделаньи эти отступы...
никак не могу понять "за каким?!", и соответственно привыкнуть...
 
Маяковский тихо плачет в сторонке...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 11:42 19-03-2020 | Исправлено: akaGM, 11:47 19-03-2020
Vasily_Koshkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажете, пожалуйста, насчет перехвата вывода внешнего процесса.
Код вроде бы элементарный, но не работает:

Код:
import subprocess  
sp = subprocess.run(["gcc", "-dumpversion"], capture_output=True, encoding='utf-8')
print("stdout: ", sp.stdout.strip())
print("stderr: ", sp.stderr.strip())

Меняю процесс - работает нормально:  

Код:
import subprocess  
sp = subprocess.run(["python", "--version"], capture_output=True, encoding='utf-8')
print("stdout: ", sp.stdout.strip())
print("stderr: ", sp.stderr.strip())

Куда копать? Есть универсальные и простые способы? Спасибо за внимание.
 
PS. Да, речь о Windows, разумеется. Запускал в XP и двух 7-ках (x32, x64).

Всего записей: 1377 | Зарегистр. 07-02-2004 | Отправлено: 14:08 19-03-2020 | Исправлено: Vasily_Koshkin, 14:29 19-03-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vasily_Koshkin
а без capture что пишет?  
откуда gcc - MinGW?

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 04:33 20-03-2020
Vasily_Koshkin



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

Цитата:
а без capture что пишет?

Я правильно понимаю, что capture_output=True - это аналог stdout=subprocess.PIPE для версий >= 3.7?

Код:
import subprocess
 
sp = subprocess.run(["gcc", "-dumpversion"],  
#                    stdout=subprocess.PIPE, stderr=subprocess.PIPE,  
#                    capture_output=True,  
                    encoding='utf-8')
print("stdout: ", sp.stdout.strip())
print("stderr: ", sp.stderr.strip())
if sp.returncode != 0:
    print("Error code: ", hex(sp.returncode))  
 
Если не писать ни то, ни другое - естественно:

Код:
Traceback (most recent call last):
  File "C:\Temp\test.py", line 7, in <module>
    print("stdout: ", sp.stdout.strip())
AttributeError: 'NoneType' object has no attribute 'strip'  

А если оставить либо то, либо другое - то Access Violation:

Код:
stdout:
stderr:
Error code: 0xc0000005


Цитата:
откуда gcc - MinGW?

Брал отсюда.
Ставил через онлайн-инсталлятор, если это имеет значение.

Всего записей: 1377 | Зарегистр. 07-02-2004 | Отправлено: 18:51 20-03-2020 | Исправлено: Vasily_Koshkin, 18:56 20-03-2020
Mavrikii

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

Цитата:
Если не писать ни то, ни другое

если нет перехвата, то и sp.stdout и sp.stderr использовать не нужно - вывод будет сразу в консоль, если мне не изменяет память.
 

Цитата:
Ставил через онлайн-инсталлятор

и находится в PATH и gcc запускается без прямого пути?
https://stackoverflow.com/questions/35844218/external-command-fails-with-return-code-0xc0000005-when-called-from-python-but-w

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:38 20-03-2020
Vasily_Koshkin



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

Цитата:
и находится в PATH и gcc запускается без прямого пути?  

Совершенно верно. Но даже если указать прямой путь, вылет всё равно происходит.
 
PS. Благодарю за ссылку, сам как-то не нашел. Понял, что дело обычное и сильно зависит от запускаемого процесса. Универсального решения я правда не увидел, кроме как погонять подопытного в Valgrind (кстати, есть ли аналогичный инструмент в виндах?), но здесь оффтопик, да и странно это было бы в моем случае (gcc - всё-таки не нонеймовская поделка).

Всего записей: 1377 | Зарегистр. 07-02-2004 | Отправлено: 12:55 21-03-2020 | Исправлено: Vasily_Koshkin, 12:55 21-03-2020
Hinzor



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я думал постить ли это, но все же... Вскоре я попрошу возможно помощи еще один или два раза на етой неделе. Если мне удастся проскочить экзамен наша программа свернет в сторону джава. Я смотрю по программе питон больше не предусмотрен. Этот курс был введением в программирование по книге Think Python. Неужели этого должно хватить студенту чтоб потом с дипломом выходить на рынок труда? Я ничего не понимаю. Зачем нужны такие курсы? Ладно, по сути: предложите какие-то книги по питону или методологию чтобы продвинуться дальше чтобы иметь хоть какие-то шансы тредоустройства в будущем. Наверное это прозвучало глупо, но все же мне не стыдно попросить совета. Спасибо.  

Всего записей: 45 | Зарегистр. 16-08-2007 | Отправлено: 02:14 22-03-2020
Mavrikii

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

Цитата:
методологию чтобы продвинуться дальше

берете различные задачки и решаете.. книги и остальное не очень то и помогают, важна практика и понимание синтаксиса.
берем, к примеру, отсюда и вперед
https://www.practicepython.org/
https://www.hackerrank.com/domains/python
https://exercism.io/tracks/python/exercises

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:19 22-03-2020 | Исправлено: Mavrikii, 02:20 22-03-2020
simonM1981

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hinzor
 
Можешь еще книгу Лутца почитать, и посмотри алгоритмы и паттерны.
И конечно практика, много РАЗНООБРАЗНОЙ практики.
 
Mavrikii уже список составил
 
А можешь сейчас начинать искать работу.
Походи по собеседованиям, иногда студентов на место джуна берут.  
И если возьмут, то на продакшине за пару-тройку месяцев много узнаешь
Даже просто пойди на собеседования и узнаешь, что нужно, и будет план дальнейшего обучения
 

Всего записей: 83 | Зарегистр. 22-03-2017 | Отправлено: 03:54 22-03-2020
Hinzor



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо за предложенные решения и помощь. Я обязательно это пересмотрю и попробую разобраться. Как вы для себя поняли что уже готовы к собеседованиям?
 
Как вседа  по традиции я попрошу помощи. Это по всей видимости мое последнее задание перед экзаменом, их было больше, я остальное сделал сам, уже позно м слипаются глаза:  
____________________________________________________________________________
 
Измените свою программу для чтения словарных элементов из файла и записи инвертированного словаря в файл. Вам нужно будет решить следующее:
 
Как отформатировать каждый элемент словаря в виде текстовой строки во входном файле.
Как преобразовать каждую входную строку в элемент словаря.
Как отформатировать каждый элемент вашего инвертированного словаря в виде текстовой строки в выходном файле.
Создайте входной файл с исходными тремя или более элементами и добавьте не менее трех новых элементов, всего не менее шести элементов.
 
вот исходящий текстовый файл:
 
CA: Fresno, Los_Angeles, San_Diego
NY: New_Rochelle, New_York, Mount_Vernon
PA: Harrisburg, Philadelphia, Pittsburgh
_____________________________________________________________________________
 
вот конечный:
 
CA: Fresno, Los_Angeles, San_Diego
NY: New_Rochelle, New_York, Mount_Vernon
PA: Harrisburg, Philadelphia, Pittsburgh
 
TX: Dallas, Houston, San_Diego
OH: Cincinatti, Cleveland, Columbus
VA: Alexandria, Norfolk, Richmond  
______________________________________________________________________________
 
 
вот код который я начал, но не могу продолжить:
 
with open('zip_zone1.txt', 'r') as x:
    text = x.read()
 
print(text)
 
 
Заранее спасибо
 
 

Всего записей: 45 | Зарегистр. 16-08-2007 | Отправлено: 06:53 26-03-2020
Mavrikii

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

Цитата:
Как вы для себя поняли что уже готовы к собеседованиям?

когда решение более менее серьезных проблем созревает в голове без долгих раздумываний.
то, чем вы сейчас занимаетесь, не относится к классу серьезных задач.
 

Цитата:
записи инвертированного словаря в файл

что значит инвертированного? замена ключа на значение и обратно?
 

Цитата:
Создайте входной файл с исходными тремя или более элементами и добавьте не менее трех новых элементов, всего не менее шести элементов.

тоже непонятно. просто вручную два текстовых файла с данными?
 

Цитата:
CA: Fresno, Los_Angeles, San_Diego

это {
  'CA': ['Fresno', 'Los_Angeles', 'San_Diego']
}
или {
  'CA': 'Fresno, Los_Angeles, San_Diego'
}
??
 
я к тому, что после инвертирования должно быть
{
  'Fresno, Los_Angeles, San_Diego': 'CA'
}
или
{
  'Fresno': 'CA',
  'Los_Angeles': 'CA',
  'San_Diego': 'CA'
}

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 07:07 26-03-2020 | Исправлено: Mavrikii, 07:22 26-03-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 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