只有第一个条件在python函数中得到验证

时间:2015-01-15 22:27:26

标签: python

def dice():
    import random
    print("******************************")
    print("***** DICE GENERATOR ******")
    print("******************************")

    #dice choice
    user_select=int(input("""Choose the type of dice to roll.
    (1)1d4
    (2)1d6
    (3)1d10
    (4)1d12
    (5)1d20
    :"""))
    if user_select==1:
        dice=random.randint(1,4)
        print(dice)
    return
    if user_select==2:
        dice=random.randint(1,6)
        print(dice)
    return
    if user_select==3:
        dice=random.randint(1,10)
        print(dice)
    return
    if user_select==4:
        dice=random.randint(1,12)
        print(dice)
    return
    if user_select==5:
        dice=random.randint(1,20)
        print(dice)
    return

在上面的示例代码中,如果我将输入设为1,则生成一个随机数,但是或者其他任何内容都没有返回。我在可视化工具中检查了它,除了1之外的所有值都返回None

3 个答案:

答案 0 :(得分:2)

这是因为你在第一个条件后直接返回。我建议你阅读一本关于python的书,并了解函数和返回的工作原理。

http://www.learnpython.org/

答案 1 :(得分:0)

正如其他人所说,问题是return不在if区块内。执行所需操作的常用方法是使用elif

def dice():
    import random
    print("******************************")
    print("***** DICE GENERATOR ******")
    print("******************************")

    #dice choice
    user_select=int(input("""Choose the type of dice to roll.
    (1)1d4
    (2)1d6
    (3)1d10
    (4)1d12
    (5)1d20
    :"""))
    if user_select==1:
        dice=random.randint(1,4)
    elif user_select==2:
        dice=random.randint(1,6)
    elif user_select==3:
        dice=random.randint(1,10)
    elif user_select==4:
        dice=random.randint(1,12)
    elif user_select==5:
        dice=random.randint(1,20)
    else:
        dice=None
    print(dice)

(编辑)注意函数末尾不需要return语句,因为python会在这里自动返回None。它无害,有些人更愿意拥有它们。

答案 2 :(得分:0)

如果达到任何return语句,您必须意识到函数结束。函数是在特定作业/目标上协同工作的小块代码。一旦完成它们,它们可以return填充或只是任何东西,具体取决于您正在使用的数据类型和函数的目标。

在您的情况下,您需要在最后return语句后只放置一个print