随机选择函数出现意外错误

问题描述 投票:0回答:1
import random
names_list = []
emails_list = []
original_dict = {}
assigned_dict = {}
emails_list2 = emails_list

# ------------------------ Saving Data -------------------------- #
while True:
    name = str(input("Enter your name: "))
    if name == "e":
        break
    email = str(input(f"Enter {name}'s email: "))
    if email == "e":
        break
    original_dict[name] = email

# ------------------------ Assigning Data -------------------------- #

for each_name in names_list:
    chosen_email = random.choice(emails_list2)
    print(chosen_email)
    assigned_dict[each_name] = chosen_email

print(names_list)
print(emails_list)
print(random.choice(emails_list))
print(original_dict)
print(assigned_dict)

这一行上面是我的整个代码...... 问题是,当我输入

random.choice([1, 2, 3, 4, 5])
时,我能够得到所需的结果,因为它从列表中为我提供了一个随机项目。但是当我输入
random.choice(emails_list2)
时,它没有给我想要的输出。相反,它给出了一个错误:

Traceback (most recent call last):
  File "C:\Users\hp\PycharmProjects\SecretSanta_Program\main.py", line 36, in <module>
    print(random.choice(emails_list))
  File "C:\Users\hp\AppData\Local\Programs\Python\Python39\lib\random.py", line 346, in choice
    return seq[self._randbelow(len(seq))]
IndexError: list index out of range

问题:我该怎么做才能得到我想要的结果??? (这是从名为 emails_list2 的列表中获取一个随机项目

(请帮助我......我是 Python 和 StackOverflow 的新手)

我预计会有很多结果,包括来自

的随机项目
emails_list 

列表

python random
1个回答
0
投票

当我运行你的代码时,我收到错误

IndexError('Cannot choose from an empty sequence')
。我不确定你是如何得到错误
IndexError: list index out of range
的,因为你的列表
emails_list
是空的,即不包含任何元素。

for
循环中的代码永远不会执行,因为
names_list
也是一个空数组,因此它没有可以迭代的元素。如果您想从用户输入的电子邮件中随机选择一封电子邮件,您首先需要将电子邮件保存在适当的列表中:

while True:
    name = str(input("Enter your name: "))
    if name == "e":
        break
    names_list.append(name) 
    email = str(input(f"Enter {name}'s email: "))
    if email == "e":
        break
    emails_list.append(email)
    original_dict[name] = email

现在我得到这个输出:

Enter your name: test
Enter test's email: test-email
Enter your name: hello
Enter hello's email: hello-email
Enter your name: world
Enter world's email: world-email
Enter your name: e
hello-email
world-email
world-email
['test', 'hello', 'world']
['test-email', 'hello-email', 'world-email']
world-email
{'test': 'test-email', 'hello': 'hello-email', 'world': 'world-email'}
{'test': 'hello-email', 'hello': 'world-email', 'world': 'world-email'}

由于我们现在将用户输入的数据添加到列表中,因此可以从列表中选择随机元素。

© www.soinside.com 2019 - 2024. All rights reserved.