1

我正在尝试做的是从变量“FGlasgow”中获取食物并将其添加到变量“食物”中,这很好而且简单,但我注意到即使 FGlasgow 变为负数,脚本仍然需要更多,所以我告诉脚本如果Glasgow < 0 添加食物并取一个随机数,问题是这是否可以缩短,以及我的方法是否正确。

import random

def RandomNo():
    Random = random.randint(0,50)
    return Random

Food = 1
FGlasgow = 100


while True:
    Random = RandomNo()
    Food += Random
    FGlasgow -= Random
    while FGlasgow < 0:
        Food -= Random
        FGlasgow += Random
        Random = RandomNo()
        Food += Random
        FGlasgow -= Random
    print "You have found" , Random , "units of food"

感谢您的帮助:)任何建议都会很棒:)

4

3 回答 3

1

你会看到我改变了变量名。它们已根据PEP-8进行了更改。

至于你的代码,是的,它可以缩短。您不需要外部 while 循环。此外,如果您想确保您的f_glasgow值不低于 0,请执行以下操作:

import random

def randomNo(limit):
    return random.randint(0,min(50,limit))

food = 1
f_glasgow = 100

while f_glasgow >= 0:
    x = randomNo(f_glasgow)
    food += x
    f_glasgow -= x
print "You have found" , food , "units of food"
于 2013-03-13T18:02:47.573 回答
0

为什么不跳过第一个 while 循环?另外,我很困惑你为什么要进行第二次随机计算。这不能潜在地否定第一个吗?为什么不简单地做:

def RandomNo():
    Random = random.randint(0,FGlasgow)
    return Random

if (FGlasgow > 0):
    Random = RandomNo()
    Food += Random
    FGlasgow -= Random
于 2013-03-13T17:41:42.153 回答
0

FGlasgow只有当Random大于时才会变为负数FGlasgow,所以如果你想防止这种情况发生,只需修改你使用的参数,randint()这样你就不会得到任何高于FGlasgow

import random

def RandomNo(upper=50):
    Random = random.randint(1, min(50, upper))
    return Random

Food = 1
FGlasgow = 100

while FGlasgow > 0:
    Random = RandomNo(FGlasgow)
    Food += Random
    FGlasgow -= Random
    print "You have found" , Random , "units of food"

请注意,在您的代码和我的代码中最终FGlasgow都会达到 0,您的代码将陷入无限循环,这就是我将while条件更改为最终停止的原因。

于 2013-03-13T17:41:54.633 回答