Я хочу назначить 2 переменные одновременно, которые в функции импортированы из другого файла - PullRequest
0 голосов
/ 13 июня 2019

Я хочу назначить 2 переменные одновременно, которые в функции импортированы из другого файла.

THIS IS THIS FUNCTION
def counter(init=[0]):
    init[0] += 1
    return init[0]
_____________________________________________
THIS IS ANOTHER SCRIPT


from Include.new_var import counter

first_letter = []

second_letter = []


def license_plate():
    global first_letter, second_letter

    characters = string.ascii_uppercase

    prices_for_letters = dict(zip(characters, range(1, len(characters) + 1)))

    print(prices_for_letters)

Фактические результаты:

counter(first_letter), counter(second_letter) = random.choice(list(prices_for_letters.items()))
    ^
SyntaxError: can't assign to function call

Ожидаемые результаты:

new variable

Я хочу автоматически генерировать новые переменные, которые будут хранить произвольно выбранное значение.

Ответы [ 2 ]

1 голос
/ 13 июня 2019
Assumptions:
1) Your function name seems to imply that you want to create a license plate.
2) Going through your profile, I see that you are from Poland so i assume you are trying to create a random license generator for vehicles in Poland.
3) A quick google search reveals that Poland license plates are 7 characters long with 2 or 3 initial chars followed by numbers.

def counter(some_char, draft_plate= []):
    draft_plate.append(str(some_char))
    return draft_plate

def license_plate():
    final_license_plate = []
    characters = string.ascii_uppercase
    numbers = range(0,10)
    prices_for_letters = dict(zip(characters, range(1, len(characters) + 1)))
    prices_for_numbers = dict(zip(numbers, range(1, len(numbers)+1)))
    numofchars = random.randint(2,3)
    for i in range(0,numofchars):
        counter(random.choice(list(prices_for_letters.keys())), final_license_plate)
    final_license_plate.append(' ')
    for j in range(numofchars,7):
        counter(random.choice(list(prices_for_numbers.keys())), final_license_plate)
    print(final_license_plate)

license_plate()
1 голос
/ 13 июня 2019

Не могли бы вы уточнить, что вы собираетесь делать после этого?Здесь вы просто пытаетесь вызвать функцию дважды.

Пожалуйста, укажите ожидаемый результат и т. Д.

Однако:

  1. Первый, выбор вернет только один элемент - вы ожидаете два.
  2. Во-вторых, просто поместите оператор выбора в вызов функции:
counter(random.choice(list(prices_for_letters.items())))
counter(random.choice(list(prices_for_letters.items()))) 
...