如何将用户输入添加到嵌套字典中?
How to add user input to a nested dictionary?
我想展示编辑后的代码,但仍然不起作用,我尝试按照建议进行操作,首先将数字转换为整数,然后将列表转换为集合。但它不断从控制台抛出相同的错误:ValueError: invalid literal for int() with base 10: '1 3 5 6 7'
完整代码如下:
lottery_numbers = [6, 7, 17, 5, 11, 25]
players = [
{"name": "Connor", "numbers": {6, 7, 17, 34, 11, 25}},
{"name": "Dave", "numbers": {3, 7, 35, 21, 5, 16}},
{"name": "Emily", "numbers": {12, 28, 4, 16, 17, 5}},
{"name": "Chris", "numbers": {34, 21, 3, 6, 13, 5}},
]
your_name = input("What is your name?")
given_numbers = input("Type any 6 numbers from 1 to 40: ")
your_numbers = [int(num) for num in given_numbers.split(',')]
your_combination = set(your_numbers)
players.append({"name": your_name, "numbers": your_combination})
print(your_combination)
numbers_matched = {}
prize_1 = 1000
prize_2 = 10000
prize_3 = 1000000
for player in players:
numbers_matched = player["numbers"].intersection(lottery_numbers)
print(f"{player['name']} has these numbers matched: {numbers_matched}")
if len(numbers_matched) > 5:
print(f"{player['name']} has won {prize_3} $")
elif len(numbers_matched) > 4:
print(f"{player['name']} has won {prize_2} $")
elif len(numbers_matched) > 3:
print(f"{player['name']} has won {prize_1} $")
enter code here
首先,这里没有嵌套字典。 players
是 list. Specifically, a list of dictionaries. The numbers
key in each of these dictionaries is a set.
因此,要向列表中添加另一个词典,请使用 .append
。然后要将 .split
返回的列表变成一个集合,您可以使用 set
转换。
此外,不要将逗号分隔的数字输入转换为 int
int(input("Type any 6 numbers from 1 to 40: "))
您如何期望 python 将 1, 2, 3, 4, 5, 6, 7
变成 int
?这是行不通的。您可以将其拆分为 ,
并将每个元素转换为 int
我们可以使用 comprehension
[int(x.strip()) for x in given_numbers.split(',')]
(注意,我使用 .strip
来去除任何多余的空格)
或者直接把它变成 set
set(int(x.strip()) for x in given_numbers.split(','))
这就是您的完整代码的样子-
your_name = input("What is your name?")
given_numbers = input("Type any 6 numbers from 1 to 40: ")
your_numbers = set(int(x.strip()) for x in given_numbers.split(','))
players.append({"name": your_name, "numbers": your_numbers})
我想展示编辑后的代码,但仍然不起作用,我尝试按照建议进行操作,首先将数字转换为整数,然后将列表转换为集合。但它不断从控制台抛出相同的错误:ValueError: invalid literal for int() with base 10: '1 3 5 6 7'
完整代码如下:
lottery_numbers = [6, 7, 17, 5, 11, 25]
players = [
{"name": "Connor", "numbers": {6, 7, 17, 34, 11, 25}},
{"name": "Dave", "numbers": {3, 7, 35, 21, 5, 16}},
{"name": "Emily", "numbers": {12, 28, 4, 16, 17, 5}},
{"name": "Chris", "numbers": {34, 21, 3, 6, 13, 5}},
]
your_name = input("What is your name?")
given_numbers = input("Type any 6 numbers from 1 to 40: ")
your_numbers = [int(num) for num in given_numbers.split(',')]
your_combination = set(your_numbers)
players.append({"name": your_name, "numbers": your_combination})
print(your_combination)
numbers_matched = {}
prize_1 = 1000
prize_2 = 10000
prize_3 = 1000000
for player in players:
numbers_matched = player["numbers"].intersection(lottery_numbers)
print(f"{player['name']} has these numbers matched: {numbers_matched}")
if len(numbers_matched) > 5:
print(f"{player['name']} has won {prize_3} $")
elif len(numbers_matched) > 4:
print(f"{player['name']} has won {prize_2} $")
elif len(numbers_matched) > 3:
print(f"{player['name']} has won {prize_1} $")
enter code here
首先,这里没有嵌套字典。 players
是 list. Specifically, a list of dictionaries. The numbers
key in each of these dictionaries is a set.
因此,要向列表中添加另一个词典,请使用 .append
。然后要将 .split
返回的列表变成一个集合,您可以使用 set
转换。
此外,不要将逗号分隔的数字输入转换为 int
int(input("Type any 6 numbers from 1 to 40: "))
您如何期望 python 将 1, 2, 3, 4, 5, 6, 7
变成 int
?这是行不通的。您可以将其拆分为 ,
并将每个元素转换为 int
我们可以使用 comprehension
[int(x.strip()) for x in given_numbers.split(',')]
(注意,我使用 .strip
来去除任何多余的空格)
或者直接把它变成 set
set(int(x.strip()) for x in given_numbers.split(','))
这就是您的完整代码的样子-
your_name = input("What is your name?")
given_numbers = input("Type any 6 numbers from 1 to 40: ")
your_numbers = set(int(x.strip()) for x in given_numbers.split(','))
players.append({"name": your_name, "numbers": your_numbers})