Форум сайта python.su
Добрый день. Только начал изучение, подскажите пожалуйста почему ни делает замену?
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 передается пустое значение.
Офлайн
В начале не напечаталось s=
Офлайн
Не пишет квадратные скобки, s - это массив
Офлайн
Код конечно бредовый, но все равно оберните его в теги:
[code python]здесь код[/code]
Отредактировано m1r42 (Март 14, 2023 14:36:59)
Офлайн
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)
Офлайн
>>> 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() Введи предложение: три раза получилось сделать, а один не получилось Введи предложение: карандаша два Введи предложение: три сестры Введи предложение: четыре спички Введи предложение: пальцев пять ['три раза получилось сделать, а один не получилось', 'карандаша два', 'три сестры', 'четыре спички', 'пальцев пять'] ['четыре раза получилось сделать, а два не получилось', 'карандаша два', 'четыре сестры', 'четыре спички', 'пальцев шесть'] >>>
Офлайн
Спасибо большое. Понял почему значения не запихивались, нужно указать длину массива и указать, что пихать в него..
А зачем вы функцию объявили? Без нее же тоже работает. Или для будущего, чтобы можно было вызвать не тратя время на написание этого блока кода?
Так мне до туда ещё далеко)
Офлайн
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)} >>>
Отредактировано py.user.next (Март 15, 2023 20:15:57)
Офлайн
Огромное спасибо за такие ответы! Не всегда есть время учиться, ребёнок)
Таких ответов наверное с фидо не видел..
Можете ещё подсказать?
Когда создаю объект типа socket и вывожу его в print(f“{host}: {port} порт активен”) в консоль выводит какие порты активны. Но в файл типа
u = open('example.txt', ‘w’)
u.write(i)
я записать не могу, т.к. данные там типа socket. Как их можно сделать типа string?
Офлайн
ravecoolтак записывайте строку в файл
u.write(i)
я записать не могу, т.к. данные там типа socket. Как их можно сделать типа string?
f'{host}: {port} порт активен'
Офлайн