尝试使用Def退出ForLoop时出现语法错误

时间:2019-02-05 05:07:33

标签: python

我正在尝试仅将random.random用于库函数来返回随机浮点数列表。每当我尝试关闭块时,我总是收到语法错误。这是我的代码:

def randomFloats(n, lower, upper) :
...     for i in range(n) : 
...             return [random.random()*(upper-lower)]
                break

2 个答案:

答案 0 :(得分:1)

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

如果要返回包含更多随机值的列表,则应使用:

import random
def randomFloats(n, lower, upper) :
    return [random.random()*(upper-lower) for _ in range(n)]

答案 1 :(得分: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语句。
  • 在for循环中有一个return语句,在执行for循环之前退出该函数。
  • 因此,您没有生成多个随机数。您正在生成一个数字。

“语法”错误

这是我的一个假设:您将break语句误认为函数的关闭语句。现实情况是,Python没有像其他语言一样具有end语句,而end语句是缩进。与其在解释器中编写“ break”,不如尝试简单地在没有函数的情况下运行函数,并确保按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))