【问题标题】:Assign functions to variables, and use random on them [closed]将函数分配给变量,并对它们使用随机数[关闭]
【发布时间】:2017-05-29 07:08:04
【问题描述】:

感谢您抽出宝贵时间准备好回答我的问题。

目前我正在为一个类创建一个方法,下面是我到目前为止所得到的。

def scramble_words_password(self, words):
    if words:
        words = words.split()
        words_count = range(len(words))

        while True:
            num = random.choice(words_count)
            del(words_count[num])
            password = [letter for letter in list(words[num])]

几个月前,我遇到了一个教程,该教程解释了如何将函数分配给变量,并在它们上使用随机之类的东西,但我再也找不到它了...

我想要在我的函数/方法中随机使用 letter.lower() 和 letter.upper() 在我的函数/方法底线的理解上,但是我怎样才能实现这一点并仍然将其全部保留在理解。

仅供参考,我知道函数 ATM 是一个无限循环,所以请不要聪明的评论;)

【问题讨论】:

标签: python python-3.x function variables


【解决方案1】:

用户random.choice 在要调用的方法列表上:

def scramble_words_password(self, words):
    if words:
        words = words.split()
        words_count = range(len(words))
        words_funcs = [str.upper, str.lower]
        while True:
            num = random.choice(words_count)
            del(words_count[num])
            password = [random.choice(words_funcs)(letter) for letter in list(words[num])]

主调用解释 random.choice(words_funcs)(letter) 将从列表中随机选择一个元素,因为它们是可调用的,您只需将字母传递给它们即可。请记住,字符串(也包括其他内置类型)中的所有方法都可以静态调用,因此带有str.lower 和str.upper 的列表就可以了。

【讨论】:

  • 正是我所寻找的谢谢 :)
【解决方案2】:

函数名的作用很像变量。您可以将它们作为参数传递给其他函数或制作函数列表。我建议你创建一个函数列表并随机选择一个列表元素。

【讨论】:

  • 你能举个例子吗?当我尝试将 upper() 和 lower() 放入列表时,我得到一个未定义的错误
  • 因为你在打电话给他们!您应该添加函数声明(即函数名称)func_list = [str.upper, str.lower]。然后,调用随机函数:random.choice(func_list)("string")
  • @Alexander 仅使用名称。括号调用函数。
  • @CarlesMitjans 我建议将选择和调用分成两行。
  • 我能问一下为什么我被否决了吗?
猜你喜欢
  • 2023-04-08
  • 2019-06-05
  • 1970-01-01
  • 2021-06-01
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多