在Python循环中丢失了一部分,其中包含一个函数来滚动di的组合值

2024-09-28 05:28:23 发布

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

我必须创建一个函数,两个随机掷骰子返回组合值。然后我要用一个循环来滚动它,给我五个不同的组合值。

我一直纠结的一点是,定义一个循环的组合滚动得到一个出来。

我只是不断地得到序列 1 22 333 4444 55555个

如果您有任何建议或帮助,不胜感激。谢谢您。

这是到目前为止我已经完成的代码

import random

def point():
    rollone = random.randint(1, 6)
    rolltwo = random.randint(1, 6)
    combined_value = dicesum(rollone, rolltwo)    


def dicesum(x, y):
    result = x + y
    return result 


for result in range(1,6):
    for dicerolls in range(result):
        print(result, end='')
    print()
point()

Tags: 函数infor定义defrange序列random
3条回答

代码的问题是在一个范围(1,6)内的一个范围(n)上创建一个循环,因此基本上第一次迭代时只得到1个总循环(第二个范围),然后创建一个新的范围(2),它打印结果内容的两倍。在第三次迭代中,调用range(3),它迭代3次打印(同样,打印只输出结果变量,而不输出骰子)。在

它确实会给你带来结果。如果我不够清楚,换句话:

print(result, end='')

通过以下行:

^{pr2}$

执行它,你会有一个更好的结果。在

编辑:@Cyber的答案是完美的,如果你想更正你的代码。我只想解释你为什么会得到这样的结果:)

您的point方法在对结果求和后不返回任何内容。请参阅下面的代码。在

import random

def point():
    rollone = random.randint(1,7)         # sample (1,7) to get values from 1 to 6
    rolltwo = random.randint(1,7)
    combined_value = rollone + rolltwo    # don't need a helper just to add these
    return combined_value                 # return the combined value

def main():
    for roll in range(5):
        print "Roll", roll, "Sum", point()

测试

^{pr2}$

在你的代码中,几乎没有被打印出来。在

import random

def point():
    rollone = random.randint(1, 6)
    rolltwo = random.randint(1, 6)
    combined_value = dicesum(rollone, rolltwo)
    # Doesn't return anything


def dicesum(x, y):                  # A long way of saying return x+y
    result = x + y                  # shouldn't be a method
    return result 


for result in range(1,6):           # loop one...
    for dicerolls in range(result): # loop two!
        print(result, end='')
    print()
point()                             # Does't output anything, as mentioned above

你实际打印的内容与

^{pr2}$

对代码的最短更正可能看起来像

def point():
    rollone = random.randint(1, 6)
    rolltwo = random.randint(1, 6)
    combined_value = dicesum(rollone, rolltwo)
    return combined_value

for roll in range(5):
    print roll, point()

(我现在看到的是赛博所说的)。在

相关问题 更多 >

    热门问题