Управление потоком понимания списка Python - PullRequest
0 голосов
/ 04 октября 2018

Может ли кто-нибудь помочь мне получить понимание списка для запуска внутри функции, она запускается из REPL.Я пробовал различные отступы и размещения внутри и вне цикла while, и код будет работать без ошибок, но объект 'newlist' не определен / не создан. Я использую это понимание списка, чтобы разделить входную строку collect_places ().и я не могу понять, почему понимание не создает новый список.

INPUT STRING

'uk, london'

СПИСОК СПИСКОВ

newlist = [str.split(',') for str in placeList]

ЭТО КОД

import sys
import re

placeList=[]
visits=[[],[]] # created for later use

def collect_places():

"""this function will collect country city pairs"""

while True:
    placed = input('Enter a country and city separated by a comma: ')

    if placed =="":
        sys.exit()

    p=re.search('.*\,.*', placed)

    try:            
        placeList.append(p.group(0))
    except AttributeError as atr:
        print('Try again')        
    continue

newlist = [str.split(',') for str in placeList]

ЭТО СЦЕНАРИЙ И ОШИБКА

        collect_places()
        Enter a country and city separated by a comma: uk,london
        Enter a country and city separated by a comma: eh
        Try again
        Enter a country and city separated by a comma:

        newlist
        Traceback (most recent call last):
        File “<pyshell#343>”, line 1, in
        newlist
        NameError: name ‘newlist’ is not defined

ЭТО ВЫПОЛНЕНО УСПЕШНО ИЗ ОТЧЕТА

        placeList
        [‘uk,london’]

        newlist = [str.split(’,’) for str in placeList]
        newlist
        [[‘uk’, ‘london’]]

1 Ответ

0 голосов
/ 05 октября 2018

Я понял, что newlist не был определен как глобальная переменная.

Local variables of functions can’t be accessed from outside when the function call has finished:

Что касается "страны, города", добавляемой дважды, это связано с тем, сколько раз я запускал метод input ()как и в случае возникновения исключения, следующий код все еще выполняется:

try:
placeList.append (p.group (0))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...