0

所以我被困在一个我必须解决的问题上,想知道你们是否可以在我的情况下帮助我(我对 python 和编程本身真的很陌生)。所以我得到的任务是,定义一个自己的新函数来从字典中挑选出名为“电话簿”的随机人并打印出来假装打电话给他们。像“randomcall(phonebook,10)”这样的东西,然后打印出来:在 1800650 和其他 9 个电话上呼叫彼得。

def randomcall(phonebook, number):
    import random
    
    for name in range(phonebook):
        name = random.choice(list(phonebook))
        phonebook = phonebook[name]
        print(f"Let's call {name} with {phonebook}")

phonebook = {"martin": 12345, "anna": 65478, "klaus": 5468764, "hans": 748463, "peter": 84698416, "ulrich": 3416846546, "frank": 4789749, "lukas": 798469, "ferdinand": 68465131}

randomcall(phonebook, 3)

randomcall("", 5)
4

2 回答 2

1

你可以这样,number将是多少人打电话的范围。

import random

def randomcall(phonebook,number):

    for _ in range(number):
        name = random.choice(list(phonebook.keys()))
        print(f'Lets call {name} with {phonebook[name]}')



phonebook = {"martin":12345,"anna":65478,"klaus":5468764,"hans":748463,"peter":84698416,"ulrich":3416846546,"frank":4789749,"lukas":798469,"ferdinand":68465131}

randomcall(phonebook,3)

输出:

Lets call lukas with 798469
Lets call peter with 84698416
Lets call klaus with 5468764
于 2020-12-18T13:19:25.090 回答
1

您的代码是正确的,除了几个小错误:

  1. 正如我在上面的评论中所说,您不能使用for name in range(phonebook),因为phonebook不是您需要迭代的整数次。number是。name迭代中也没有引用该变量;它被分配了一个新值。所以可以改成另一个变量,比如i,在迭代中比较常用。
  2. 在您的代码中,要呼叫的人的号码存储在变量 下phonebook,该变量是电话簿字典的变量。这使得无法再次访问实际的电话簿。另一个变量,如phone,可以在那里使用。

所以完成的代码应该是这样的:

def randomcall(phonebook, number):
    import random

    for name in range(number):
        name = random.choice(list(phonebook))
        phonebook = phonebook[name]
        print(f"Let's call {name} with {phonebook}")


phonebook = {"martin": 12345, "anna": 65478, "klaus": 5468764, "hans": 748463, "peter": 84698416, "ulrich": 3416846546, "frank": 4789749, "lukas": 798469, "ferdinand": 68465131}

randomcall(phonebook, 3)

输出:

Let's call anna with 65478
Let's call klaus with 5468764
Let's call hans with 748463

此外,正如此评论中所述,该行randomcall("", 5)用于调用随机人。实际上,电话簿必须作为phonebook参数传递给函数,如果1传递给number参数,则会产生1次随机调用。

于 2020-12-18T13:20:25.830 回答