关于python的w3w字典练习问题
这是其中一个练习中字典的基本问题。问题是: 编写一个Python脚本,生成并打印一个字典,其中包含一个(x,x*x)形式的数字(介于1和n之间) 这是我的代码:关于python的w3w字典练习问题,python,dictionary,Python,Dictionary,这是其中一个练习中字典的基本问题。问题是: 编写一个Python脚本,生成并打印一个字典,其中包含一个(x,x*x)形式的数字(介于1和n之间) 这是我的代码: import random def dict_generate(): n = int(input("Please enter an integer:")) dic = {} for x in range(n): num = random.randrange(1,n)
import random
def dict_generate():
n = int(input("Please enter an integer:"))
dic = {}
for x in range(n):
num = random.randrange(1,n)
key = num
value = num*num
dic[key] = value
print(dic)
dict_generate()
然而,当我运行它时,它似乎跳过了几次迭代,因此最终的结果是我得到了一个字典,其中的值比我输入的数字小。例如,我输入了5,但不是5组键和值,我的输出是:
{3:9,1:1,2:4}
通过python tutor运行此代码,问题似乎是没有将值插入字典。我似乎不明白为什么。如果有人能解释一下,那会很有帮助的,谢谢。
(我知道还有很多其他方法可以完成这个问题,但我正在努力理解我错在哪里。)
由于您将该键用作随机数,因此该键可能会反复出现相同的数字,因此您的词典中的键数少于5个
为什么要使用
num=random.randrange(1,n)
?如果使用随机数,很可能会发生这种情况……是的,很可能是某些键是相同的,因此修改了字典中的相同项。
num = random.randrange(1,n)
key = num