Найти - Пользователи
Полная версия: Помогите разобраться.
Начало » Python для новичков » Помогите разобраться.
1 2
ravecool
Добрый день. Только начал изучение, подскажите пожалуйста почему ни делает замену?
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 передается пустое значение.
ravecool
В начале не напечаталось s=
ravecool
Не пишет квадратные скобки, s - это массив
m1r42
Код конечно бредовый, но все равно оберните его в теги:
 [code python]здесь код[/code]
ravecool
 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)
py.user.next
  
>>> 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
Спасибо большое. Понял почему значения не запихивались, нужно указать длину массива и указать, что пихать в него..
А зачем вы функцию объявили? Без нее же тоже работает. Или для будущего, чтобы можно было вызвать не тратя время на написание этого блока кода?
Так мне до туда ещё далеко)
py.user.next
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 используется в разных функциях по-разному и для разных операций.
ravecool
Огромное спасибо за такие ответы! Не всегда есть время учиться, ребёнок)
Таких ответов наверное с фидо не видел..
Можете ещё подсказать?
Когда создаю объект типа socket и вывожу его в print(f“{host}: {port} порт активен”) в консоль выводит какие порты активны. Но в файл типа
u = open('example.txt', ‘w’)
u.write(i)
я записать не могу, т.к. данные там типа socket. Как их можно сделать типа string?
xam1816
ravecool
u.write(i)
я записать не могу, т.к. данные там типа socket. Как их можно сделать типа string?
так записывайте строку в файл
f'{host}: {port} порт активен'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB