在Python 3中为函数指定变量名称

时间:2017-10-13 16:49:57

标签: python python-3.x random variadic-functions dice

所以我正在编写一个程序,一旦完成,将有一个用户掷2个骰子,然后保持显示的值的运行总和,并为滚动的值分配一些点,但我遇到了问题刚开始的时候。 这就是我到目前为止所做的:

def diceOne():
    import random
    a = 1
    b = 6
    diceOne = (random.randint(a, b))

def diceTwo():
    import random
    a = 1
    b = 6
    diceTwo = (random.randint(a, b))

def greeting():
    option = input('Enter Y if you would like to roll the dice: ')
    if option == 'Y':
        diceOne()
        diceTwo()
        print('you have rolled a: ' , diceOne, 'and a' , diceTwo)



greeting()

(之后,我计划像diceTwo + diceOne一样进行计算,并做其他所有事情 - 我知道这非常粗糙)

但是当它运行时,它没有按预期给出好的整数值,它返回function diceOne at 0x105605730> and a <function diceTwo at 0x100562e18> 有没有人知道如何解决这个问题,同时仍然可以分配变量名称,以便以后能够执行计算?

2 个答案:

答案 0 :(得分:1)

您的代码存在一些问题。我会将此作为答案发布,因为它比评论更具可读性

  1. 只导入一次,而不是每种方法
  2. diceOne()和diceTwo()做同样的事情,所以只需定义一个方法dice()
  3. dice()返回一个值,而不是将dice()分配给random.randint()
  4. 您可以直接在打印声明中致电dice()

    import random
    
    def dice():
      a = 1
      b = 6
      return random.randint(a, b)
    
    def greeting():
      option = input('Enter Y if you would like to roll the dice: ')
      if option == 'Y':
        print('you have rolled a ' , dice(), 'and a ', dice())
    
    greeting()
    

答案 1 :(得分:-1)

你必须return函数中的某些内容才能对函数本身之外的任何事物产生影响。然后,在您的函数greeting()中,您必须通过调用call而不是diceOne()diceOne这些函数。

尝试:

def diceOne():
    import random
    a = 1
    b = 6
    return (random.randint(a, b))

def diceTwo():
    import random
    a = 1
    b = 6
    return (random.randint(a, b))

def greeting():
    option = input('Enter Y if you would like to roll the dice: ')
    if option == 'Y':
        diceOne()
        diceTwo()
        print('you have rolled a: ' , diceOne(), 'and a' , diceTwo())

greeting()