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

2024-05-16 02:13:45 发布

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

我试图返回一个随机浮点数列表,只对库函数使用random.random。每当我试图关闭我的块时,总是会出现语法错误。这是我的密码:

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

Tags: in密码列表forreturndefrangerandom
2条回答

你的代码有很多问题。我们来分解一下:

使用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。您还应该注意,当我们退出函数时,“IN HERE”没有打印出来。你知道吗

修复代码

现在用我们上面的知识查看您的代码,我们可以看到一些明显的错误:

  • 你有一个永远达不到的中断语句。你知道吗
  • 在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))

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

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

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

相关问题 更多 >