【问题标题】:I Dont know whats wrong with this code [closed]我不知道这段代码有什么问题[关闭]
【发布时间】:2015-04-24 16:37:50
【问题描述】:

所以我希望这段代码按照 list1 到 list2 到 list3 的顺序从每个列表中选择一个随机项。然后我希望它把它们放入一个随机生成的句子中:

from random import randint

list1 = ["Artless", "Bawdy", "Bootless"]

list2 = ["Base-court", "Bat-fowling", "Beetle-headed"]

list3 = ["Apple-john", "Baggage", "Bladder"]

import random

def nurd3(): 
  print (random.choice(list1))

def nurd2():
    print (random.choice(list2))

def nurd1(): 
   print (random.choice(list3))


print ("Thou" + nurd1() + nurd2() + nurd3())

【问题讨论】:

  • 您正在打印,而不是返回。所以函数调用会打印出他们的单词,什么也不返回,然后你打印出thou 字符串...
  • 请务必包含您获得的输出以及您的预期。许多程序员可以猜测你的问题是什么,但如果没有明确的问题陈述,你的问题对其他人没有用处。

标签: python random


【解决方案1】:

您需要在每个函数中使用return 而不是print

def nurd3(): 
  return random.choice(list1)

def nurd2():
    return random.choice(list2)

def nurd1(): 
   return random.choice(list3)

【讨论】:

    【解决方案2】:

    您的函数正在打印项目,而不是返回字符串,因此您不能使用它们在最后一次打印中连接字符串。这些函数都返回None

    【讨论】:

      【解决方案3】:

      主要问题是您将函数的打印值与函数的返回值混淆了。

      当您打印该值时,该值只是简单地打印到解释器。当您返回该值时,函数调用会计算为该值,这就是您想要的。

      所以,而不是

      def nurd3(): 
        print (random.choice(list1))
      

      使用这个

      def nurd3(): 
        return (random.choice(list1))
      

      另请注意,您需要在单词周围留有空格。实现这一目标的最佳方法是:

      print ("Thou {n1} {n2} {n3}".format(n1=nurd1(), n2=nurd2(), n3=nurd3()))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 2018-12-19
        • 1970-01-01
        • 2022-06-10
        • 2016-05-13
        • 2012-09-08
        相关资源
        最近更新 更多