Уведомления

Группа в Telegram: @pythonsu

#1 Март 14, 2023 13:40:04

ravecool
Зарегистрирован: 2023-03-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться.

Добрый день. Только начал изучение, подскажите пожалуйста почему ни делает замену?
s=
slova = {'один':'два', ‘три’:'четыре', ‘пять’:'шесть'}
for x in range(5):
inputWord = input('Введи слово: ')
s.append(inputWord)
print(s)
for key in slova:
s = s.replace(key, slova)
print(s)

В массив s значения записываются, но почему они дальше не могут заменяться? В нижнюю переменную s передается пустое значение.

Офлайн

#2 Март 14, 2023 13:43:04

ravecool
Зарегистрирован: 2023-03-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться.

В начале не напечаталось s=

Офлайн

#3 Март 14, 2023 13:43:27

ravecool
Зарегистрирован: 2023-03-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться.

Не пишет квадратные скобки, s - это массив

Офлайн

#4 Март 14, 2023 14:36:21

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Помогите разобраться.

Код конечно бредовый, но все равно оберните его в теги:

 [code python]здесь код[/code]

Отредактировано m1r42 (Март 14, 2023 14:36:59)

Офлайн

#5 Март 14, 2023 16:29:56

ravecool
Зарегистрирован: 2023-03-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться.

 s= []
slova = {'один':'два', ‘три’:'четыре', ‘пять’:'шесть'}
for x in range(5):
    inputWord = input('Введи предложение: ')
    s.append(inputWord)
print(s)
for key in slova:
    s = s.replace(key, slova[key])
print(s)

Офлайн

#6 Март 14, 2023 23:10:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9865
Репутация: +  853  -
Профиль   Отправить e-mail  

Помогите разобраться.

  
>>> def f():
...     s = []
...     slova = {'один': 'два', 'три': 'четыре', 'пять': 'шесть'}
...     
...     for x in range(5):
...         inputWord = input('Введи предложение: ')
...         s.append(inputWord)
...     
...     print(s)
...     
...     for key in slova:
...         for i in range(len(s)):
...             s[i] = s[i].replace(key, slova[key])
...     
...     print(s)
... 
>>> f()
Введи предложение: три раза получилось сделать, а один не получилось
Введи предложение: карандаша два
Введи предложение: три сестры
Введи предложение: четыре спички
Введи предложение: пальцев пять
['три раза получилось сделать, а один не получилось', 'карандаша два', 'три сестры', 'четыре спички', 'пальцев пять']
['четыре раза получилось сделать, а два не получилось', 'карандаша два', 'четыре сестры', 'четыре спички', 'пальцев шесть']
>>>



Офлайн

#7 Март 15, 2023 19:46:06

ravecool
Зарегистрирован: 2023-03-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться.

Спасибо большое. Понял почему значения не запихивались, нужно указать длину массива и указать, что пихать в него..
А зачем вы функцию объявили? Без нее же тоже работает. Или для будущего, чтобы можно было вызвать не тратя время на написание этого блока кода?
Так мне до туда ещё далеко)

Офлайн

#8 Март 15, 2023 20:02:21

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9865
Репутация: +  853  -
Профиль   Отправить e-mail  

Помогите разобраться.

ravecool
А зачем вы функцию объявили? Без нее же тоже работает. Или для будущего, чтобы можно было вызвать не тратя время на написание этого блока кода?
Если вот это всё взять, скопировать в буфер и вставить в консоль
def f():
s = []
slova = {'один': 'два', 'три': 'четыре', 'пять': 'шесть'}

for x in range(5):
inputWord = input('Введи предложение: ')
s.append(inputWord)

print(s)

for key in slova:
for i in range(len(s)):
s[i] = s[i].replace(key, slova[key])

print(s)

f()
то оно сразу сработает и будет ожидать ввода предложений.

Если же вот это всё взять, скопировать в буфер и вставить в консоль
s = []
slova = {'один': 'два', 'три': 'четыре', 'пять': 'шесть'}

for x in range(5):
inputWord = input('Введи предложение: ')
s.append(inputWord)

print(s)

for key in slova:
for i in range(len(s)):
s[i] = s[i].replace(key, slova[key])

print(s)
то оно на строке ввода предложений начнёт ждать ввода предложений и туда в качестве предложений начнут вводиться следующие строки кода.

Так что придётся для этого создавать файл сначала, потом копировать этот код туда и потом запускать этот файл.

Так что при первом копировании получается
  
>>> def f():
...     s = []
...     slova = {'один': 'два', 'три': 'четыре', 'пять': 'шесть'}
...     
...     for x in range(5):
...         inputWord = input('Введи предложение: ')
...         s.append(inputWord)
...     
...     print(s)
...     
...     for key in slova:
...         for i in range(len(s)):
...             s[i] = s[i].replace(key, slova[key])
...     
...     print(s)
... 
>>> f()
Введи предложение: один
Введи предложение: два
Введи предложение: три
Введи предложение: четыре
Введи предложение: пять
['один', 'два', 'три', 'четыре', 'пять']
['два', 'два', 'четыре', 'четыре', 'шесть']
>>>
А при втором копировании получается
  
>>> s = []
>>> slova = {'один': 'два', 'три': 'четыре', 'пять': 'шесть'}
>>> 
>>> for x in range(5):
...     inputWord = input('Введи предложение: ')
...     s.append(inputWord)
... 
Введи предложение: print(s)
Введи предложение: 
Введи предложение: for key in slova:
Введи предложение:     for i in range(len(s)):
Введи предложение:         s[i] = s[i].replace(key, slova[key])
>>> 
>>> print(s)
['print(s)', '', 'for key in slova:', '    for i in range(len(s)):', '        s[i] = s[i].replace(key, slova[key])']
>>>
То есть для этого кода надо файл создавать, так как просто открыть консоль питона, скопировать этот код в консоль питона и закрыть потом консоль питона без создания файла не получится.

ravecool
Или для будущего, чтобы можно было вызвать не тратя время на написание этого блока кода?
Функция всегда сначала записывается вся, определяется целиком, а вызывается уже после полного определения, когда в определении функции уже записано всё тело функции.

ravecool
Так мне до туда ещё далеко)
Функции придётся всегда делать в итоге, потому что это создаёт пространства имён, которые принадлежат функциям. Локальные пространства имён в функциях дают повторять одни и те же имена во всём коде в целом без пересечений и наложений этих имён друг на друга.

Пример
  
>>> def f1(x):
...     return x * x
... 
>>> def f2(x):
...     return 2 * x + 1
... 
>>> def f3(x):
...     return 'Hello ' + x
... 
>>> def f4(x):
...     s = 0.0
...     for i in range(5):
...         print(i * x)
...         s += i + x
...     return s
... 
>>> def f5(x):
...     x.add(1+2j)
...     return x
... 
>>> f1(4)
16
>>> 
>>> f2(5)
11
>>> 
>>> f3('John')
'Hello John'
>>> 
>>> f4(123.456)
0.0
123.456
246.912
370.368
493.824
627.28
>>> 
>>> f5({1, None, 3})
{1, None, 3, (1+2j)}
>>>
То есть благодаря функциям тебе не нужно сидеть и выдумывать имена для разных ситуаций и операций. Здесь одно и то же имя x используется в разных функциях по-разному и для разных операций.



Отредактировано py.user.next (Март 15, 2023 20:15:57)

Офлайн

#9 Март 19, 2023 19:42:24

ravecool
Зарегистрирован: 2023-03-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться.

Огромное спасибо за такие ответы! Не всегда есть время учиться, ребёнок)
Таких ответов наверное с фидо не видел..
Можете ещё подсказать?
Когда создаю объект типа socket и вывожу его в print(f“{host}: {port} порт активен”) в консоль выводит какие порты активны. Но в файл типа
u = open('example.txt', ‘w’)
u.write(i)
я записать не могу, т.к. данные там типа socket. Как их можно сделать типа string?

Офлайн

#10 Март 19, 2023 20:23:22

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1352
Репутация: +  118  -
Профиль   Отправить e-mail  

Помогите разобраться.

ravecool
u.write(i)
я записать не могу, т.к. данные там типа socket. Как их можно сделать типа string?
так записывайте строку в файл
f'{host}: {port} порт активен'

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version