Изменение внешних данных, таких как список python - PullRequest
0 голосов
/ 14 января 2020

У меня есть проблема, которая, кажется, должна быть простой в моей голове, но я изо всех сил пытаюсь найти самый простой способ ее выполнения.

По сути, у меня есть 2 списка имен:

list1 = ['name1', 'name2', 'name3', 'name4', 'name5']
list2 = ['name6', 'name7', 'name8', 'name9', 'name10']

Моя конечная цель заключается в том, чтобы при запуске сценария python я возвращал 1 случайное имя из каждого списка, но в идеале сценарий не должен возвращать одно и то же имя из любого списка в течение следующих 4 раз, когда он был запущен. , По сути, я хочу, чтобы пара / выбор каждого прогона были случайными, но я хочу, чтобы он перезапускал ротацию каждые 5 раз при запуске скрипта.

Я думаю, что мне нужно будет хранить данные извне. Концептуально, я думаю, что мне нужен сценарий для перемещения имени из одного списка в другой список каждый раз, когда он запускается, и когда первый список пуст, он переворачивает и перемещает имена другим способом и т. Д.

Следует я использую csv.DictReader для перемещения имен между двумя CSV? или хранить их в JSON?

Простите, если это не имеет смысла. Я изо всех сил пытаюсь выразить свою проблему словами.

1 Ответ

0 голосов
/ 14 января 2020

Почему бы просто не сохранить его в текстовом файле?

import random

list1 = ['name1', 'name2', 'name3', 'name4', 'name5']
list2 = ['name6', 'name7', 'name8', 'name9', 'name10']

used = open("old.txt").readlines()

l1_copy = list1[:]
l2_copy = list2[:]
for line in used:
    if line := line.strip():
        a, b = line.split(",")
        l1_copy.remove(a)
        l2_copy.remove(b)

if not l1_copy or not l2_copy:
    # clear file
    with open("old.txt", "w"): pass
else:
    list1 = l1_copy
    list2 = l2_copy

choice1, choice2 = random.choice(list1), random.choice(list2)

print("Choice 1:", choice1)
print("Choice 2:", choice2)

with open("old.txt", "a") as f:
    f.write(choice1 + "," + choice2 + "\n")

Создать файл с именем old.txt в вашем текущем каталоге. Он будет хранить предыдущие запуски, разделенные запятыми.

Пример прогона:

$ python3.8 choose_from_list.py 
Choice 1: name2
Choice 2: name9
$ python3.8 choose_from_list.py 
Choice 1: name5
Choice 2: name10
$ python3.8 choose_from_list.py 
Choice 1: name4
Choice 2: name6
$ python3.8 choose_from_list.py 
Choice 1: name1
Choice 2: name7
$ python3.8 choose_from_list.py 
Choice 1: name3
Choice 2: name8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...