61

Re: Потрібна допомога

Виникло таке питання: якщо при створенні функції є змога створити анонімну (за допомогою lambda), то краще створити анонімну чи звичайну? Хоч анонімна буде швидшою, але мені здається, що звичайна краще читабельна.

62

Re: Потрібна допомога

По ситуації. lambda x: x**2 читається точно не гірше від def f(x): return x**2.
І анонімна не буде швидшою, принаймні, в сенсі швидкості виконання, радше навпаки.
Звичайна краще читається, що у неї вдала назва. Якщо назва виглядає як корисний коментар для цього рядка - тоді варто робити звичайну.

Подякували: Eff1c, ping, sensei, leofun014

63

Re: Потрібна допомога

Створив прогу, яка редагує текстовий документ (зчитує всю інфу з txt, перетворює її в список, питає куди добавити, добавляє те, що введене в список, перетворює список в строку і записує все назад, стираючи попередню інфу)

def txt():
    txt_input = input('Введіть назву текстового документу: ')
    #ввести назву txt
    txt_output = []
    file = open(txt_input, 'tw')
    for line in file:
        txt_output.append(line.split())
    print(txt_output)
    txt_out = int(input('Введіть порядковий номер слова, після якого ви хочете додати свій текст: '))
    #ввести номер слова від якого вставляти txt
    txt_append = split(str(input('Введіть текст, який хочете додати: ')))
    #що саме вставляти
    txt_output.insert(txt_out, txt_append)
    txt_output = sum(txt_output)
    file.write(txt_output)
    file.close()
x = int(input('Введіть 1 для того, щоб продовжити: '))
#ввести 1 щоб продовжити
while x == 1:
    txt()
    x = int(input('Введіть 1 для того, щоб продовжити: '))
    #те ж саме
print('Це не 1, тому я завершую роботу.')
#завершую роботу

Ось, що вибиває:

Введіть 1 для того, щоб продовжити: 1
Введіть назву текстового документу: txt.txt

Traceback (most recent call last):
  File "C:\Users\andry\AppData\Local\Programs\Python\Python36-32\practice\txt_experiment.py", line 20, in <module>
    txt()
  File "C:\Users\andry\AppData\Local\Programs\Python\Python36-32\practice\txt_experiment.py", line 2, in txt
    txt_input = input('Введіть назву текстового документу: ')
  File "<string>", line 1, in <module>
AttributeError: 'function' object has no attribute 'txt'
>>> 

До першого запуску всі надписи були на українській. Потім чомусь стали ці карлючки. Що з ними робити мені не менш цікаво, ніж де проблема. На utf-8 це не схоже. Я звичайно можу знову написати українські фрази, але ж не після кожного запуску програми.
А на рахунок проблеми: я пробував замість імені файла вказувати його шлях до нього на компі - не допомогло.

64

Re: Потрібна допомога

Це перший чи другий Python?

65

Re: Потрібна допомога

koala написав:

Це перший чи другий Python?

Третій.

66

Re: Потрібна допомога

І ще одне питання на рахунок того, як краще писати:
pow(x, y[, r]) чи ( x ** y ) % r
Що з них швидше обраховується і яке більш читабельне

67

Re: Потрібна допомога

Eff1c

Яка ОС стоїть?

68

Re: Потрібна допомога

Eff1c написав:

І ще одне питання на рахунок того, як краще писати:
pow(x, y[, r]) чи ( x ** y ) % r
Що з них швидше обраховується і яке більш читабельне

То як на рахунок цього?

69

Re: Потрібна допомога

По проблемі: там чітко є спроба звернутися до функція.txt в рядку

txt_input = input('Введіть назву текстового документу: ')

Оскільки жодних спроб звернутися до будь-чого .txt тут немає і ви вводите 'txt.txt', єдине логічне припущення, яке я можу зробити - ви запустили це на другому Python і input намагається обчислити те, що ви ввели (txt.txt) як вираз Python, а оскільки функція txt не має ніяких атрибутів .txt, стається збій.

Що з них швидше обраховується і яке більш читабельне

Швидше, в принципі, перше (бо не обчислює числа x**y, а одразу залишок), але якщо для вас важлива швидкість, то ви обрали не ту мову.
Про читаність - гадаю, ви самі здатні відповісти на це питання.

Подякували: Eff1c, leofun012

70

Re: Потрібна допомога

koala написав:

По проблемі: там чітко є спроба звернутися до функція.txt в рядку

txt_input = input('Введіть назву текстового документу: ')

Оскільки жодних спроб звернутися до будь-чого .txt тут немає і ви вводите 'txt.txt', єдине логічне припущення, яке я можу зробити - ви запустили це на другому Python і input намагається обчислити те, що ви ввели (txt.txt) як вираз Python, а оскільки функція txt не має ніяких атрибутів .txt, стається збій.

Та ні ще раз перевірив це на 3 і знову видало помилку.

71

Re: Потрібна допомога

Python 3: https://ideone.com/7ifMrM
Python 2: https://ideone.com/9rDfo2
Де саме ваша помилка, кажете?

72

Re: Потрібна допомога

koala написав:

Python 3: https://ideone.com/7ifMrM
Python 2: https://ideone.com/9rDfo2

Ну і там і там помилка.

koala написав:

Де саме ваша помилка, кажете?

Я не знаю в чому помилка *SCRATCH*

73

Re: Потрібна допомога

Помилок може бути багато різних. Конкретно ви скаржилися на помилку "'function' object has no attribute 'txt'", пов'язану, найімовірніше, з тим, що ви запускали цей код у Python2. Якщо Python3 повідомляє про іншу помилку, і ви не розумієте, чому - то, будь ласка, скопіюйте сюди те, що вам видає інтерпретатор.
На ideone Python2 падає через ту саму помилку, яку ви вказали, а от Python3 - з Permission denied: 'txt.txt', тобто у програми немає дозволу на відкриття файлу txt.txt (що зрозуміло, цей онлайн-компілятор не призначений для роботи з файлами).

Подякували: leofun011

74

Re: Потрібна допомога

koala написав:

Помилок може бути багато різних. Конкретно ви скаржилися на помилку "'function' object has no attribute 'txt'", пов'язану, найімовірніше, з тим, що ви запускали цей код у Python2. Якщо Python3 повідомляє про іншу помилку, і ви не розумієте, чому - то, будь ласка, скопіюйте сюди те, що вам видає інтерпретатор.
На ideone Python2 падає через ту саму помилку, яку ви вказали, а от Python3 - з Permission denied: 'txt.txt', тобто у програми немає дозволу на відкриття файлу txt.txt (що зрозуміло, цей онлайн-компілятор не призначений для роботи з файлами).

Eff1c написав:
Traceback (most recent call last):
  File "C:\Users\andry\AppData\Local\Programs\Python\Python36-32\practice\txt_experiment.py", line 20, in <module>
    txt()
  File "C:\Users\andry\AppData\Local\Programs\Python\Python36-32\practice\txt_experiment.py", line 2, in txt
    txt_input = input('Введіть назву текстового документу: ')
  File "<string>", line 1, in <module>
AttributeError: 'function' object has no attribute 'txt'

Я точно запускав в 3-му, а не 2-му. Хіба що мені в неті підсунули 2-й під виглядом 3-го *SCRATCH*  , але це навряд, бо функція інпат працює так як в 3-му.

75

Re: Потрібна допомога

input вимовляється "інпут" і в Python3 не виконує свого аргумента, відповідно, не виникає жодних "атрибутів 'txt'".

76

Re: Потрібна допомога

Зробив перевірку...
Ось код:

t = input('- ')
print(t)
t = int(t)
print(t) 

Ось що вийшло:

>>> 
 RESTART: C:/Users/andry/AppData/Local/Programs/Python/Python36-32/practice/x.py 
- name
name
Traceback (most recent call last):
  File "C:/Users/andry/AppData/Local/Programs/Python/Python36-32/practice/x.py", line 3, in <module>
    t = int(t)
ValueError: invalid literal for int() with base 10: 'name'
>>> 

Зробив у тій же версії пайтону.
Тепер вірите?

77

Re: Потрібна допомога

У мене не виходить відтворити вашу помилку. Якщо з того часу ви перезапускали комп'ютер, то можете знову запустити той код і підтвердити, що лишається саме ця помилка - "AttributeError: 'function' object has no attribute 'txt'"?

78

Re: Потрібна допомога

koala написав:

У мене не виходить відтворити вашу помилку. Якщо з того часу ви перезапускали комп'ютер, то можете знову запустити той код і підтвердити, що лишається саме ця помилка - "AttributeError: 'function' object has no attribute 'txt'"?

Traceback (most recent call last):
  File "C:\Users\andry\AppData\Local\Programs\Python\Python36-32\practice\txt_experiment.py", line 20, in <module>
    txt()
  File "C:\Users\andry\AppData\Local\Programs\Python\Python36-32\practice\txt_experiment.py", line 2, in txt
    txt_input = input('Введіть назву текстового документу: ')
  File "<string>", line 1, in <module>
AttributeError: 'function' object has no attribute 'txt'
>>> 

знову...
мені здається що можливо програма просто не находить документ, хоча я пробував вказувати шлях до нього (але це лише припущення)

79

Re: Потрібна допомога

Видалив взагалі пайтон 2. Запустив ще раз. Тепер зовсім інша помилка...

Traceback (most recent call last):
  File "C:\Users\andry\AppData\Local\Programs\Python\Python36-32\practice\txt_experiment.py", line 20, in <module>
    txt()
  File "C:\Users\andry\AppData\Local\Programs\Python\Python36-32\practice\txt_experiment.py", line 6, in txt
    for line in file:
io.UnsupportedOperation: not readable

Але я не розумію як таке могло статися... Я на 99.9999% впевнений, що відкривав в 3-му (там інтерфейс інтерактивного вікна інший ніж в 2-му + ту прогу для перевірки я ж так само як і цю прогу запускав)
Я не знаю в чому була причина *DONT_KNOW*  *SCRATCH*

80

Re: Потрібна допомога

Щось тут не так.
Як ви запускаєте обидва файли - однаково, через IDLE (чи консоль), чи по-різному, скажімо, один подвійним клацанням?