在python中不循环while循环

2024-09-21 05:32:58 发布

您现在位置:Python中文网/ 问答频道 /正文

简单的while循环,没有按预期工作。我正在尝试创建一个函数来模拟一个骰子的滚动,并保持结果的运行总数,直到该总数为>;=m,此时它应该停止。我想知道最后的总数是多少,以及到那里需要多少卷。你知道吗

目前它滚动两次,报告总数为9。我已经检查了循环外的代码,它做了它应该做的事情(即,这3行:r = rdm.randint(1,6)tot += rrolls.append(r))。你知道吗

我错过了什么??你知道吗

def roll(m):
    rolls = []
    tot = 0
    while tot < m:
        r = rdm.randint(1,6)
        tot += r  
        rolls.append(r)
    return tot
    return rolls
    return r

m=100    
roll(m)    
print "The number of rolls was", len(rolls)  
print "The total is", tot

Tags: the函数gtreturn报告骰子printroll
3条回答

您只能有一个return语句。使用逗号分隔返回值,并在使用多个赋值调用函数时将它们赋给变量。你知道吗

返回总数,转鼓,r

当你调用函数时:

tot,转鼓,r=转鼓(m)

似乎您对控件如何从函数返回以及如何返回值有误解。当前的问题与while循环无关,而与处理函数返回的方式无关。你知道吗

您应该了解,可以有多个返回路径,但是对于任何特定的执行,只执行一个返回,序列路径中的任何后续返回都将被忽略。你知道吗

此外,还需要一种捕获返回值的方法,它不能自动污染全局命名空间

所以要总结和解决你的问题,一个可能的出路是

def roll(m):
    rolls = []
    tot = 0
    while tot < m:
        r = rdm.randint(1,6)
        tot += r  
        rolls.append(r)
    return tot, rolls, r
tot, rolls, r = roll(m) 
print "The number of rolls was", len(rolls)  
print "The total is", tot

一般来说,这应该是可行的,但是对于一个函数来说,一行使用多个return语句是行不通的。函数计算return的那一刻,该函数停止激发。如果要返回多个值,请返回元组:

def roll(m):
    rolls = []
    tot = 0
    while tot < m:
        r = rdm.randint(1,6)
        tot += r  
        rolls.append(r)
    return tot, rolls, r

m=100    
a, b, c = roll(m)    
print "The number of rolls was", len(b)  
print "The total is", a

相关问题 更多 >

    热门问题