语法错误,而试图退出For循环使用默认值

问题描述 投票:-3回答:2

我想返回只使用random.random的库函数随机浮点数的列表。我不断收到一个语法错误,每当我试图关闭我的块。这里是我的代码:

def randomFloats(n, lower, upper) :
...     for i in range(n) : 
...             return [random.random()*(upper-lower)]
                break
python
2个回答
0
投票

有许多东西你的代码错误。让我们打破这些下来:

break使用

Python的声明break适用于在运行期间退出循环。这方面的一个例子是:

for i in range(10):
    if i == 2:
        break
    else:
        print(i)

那么输出将是:

0
1

也许从这个你已经可以告诉大家,在你的代码中使用break是不妥当的。

return使用

return语句是功能的“最终”的执行;或者换句话说,当达到return语句时,函数返回时,并退出。一个例子来展示这一点:

def func():
    for i in range(10):
        return i
        print("IN HERE!")

print(func())

输出:

0

正如你所看到的,函数不返回0-10为也许你认为它会。你还应该注意,“这里”不是印刷,因为我们退出的功能。

修复代码

现在看看我们所拥有的上面,我们可以看到一些明显的错误认识你的代码:

  • 你永远达不到一个break语句。
  • 你有一个return语句for循环是的for循环完成执行之前退出函数里面。
  • 因此,您没有生成多个随机数。您正在生成一个号码。

“语法”错误

这是我的一个假设:你弄错break语句的功能致闭幕词。现实情况是,Python没有像其他语言end语句,而是,结束语句是缩进。相反,在解释写作“休息”,尽量只运行你的函数没有它,并确保按Enter键退出函数声明出来(您将不再看到光点,而是>>>)。

Press enter.

也许你正在寻找(不含列表理解)的代码如下:

import random

def randomFloats(n, lower, upper):
    l = [] # Creating a list named 'l'
    for i in range(n):
        l.append(random.random() * (upper - lower)) # Appending n random numbers to list l.

    return l # Returning the list l.

print(randomFloats(10, 1, 10))

1
投票

这的确代码将进入一个循环(假定压痕是一致的),但是,在该循环的第一次迭代中,它会返回一个包含一个随机浮点值的列表。

如果你想返回更多的随机值的列表,你应该使用:

import random
def randomFloats(n, lower, upper) :
    return [random.random()*(upper-lower) for _ in range(n)]
© www.soinside.com 2019 - 2024. All rights reserved.