允许范围函数计算非数字表达式

发布于 2024-12-02 07:08:59 字数 434 浏览 1 评论 0原文

我正在使用 makearange 函数输入数组的开始、停止和增量范围,即

User = raw_input('Enter start,[stop],[increment]: ').split(',')
makearange = lambda a: numpy.arange(int(a[0]),int(a[1]),int(a[2]))
x = makearange(User)

,但是我也使用这些数字来运行程序来创建输入数字的平方和立方体的数组。我在无限 while 循环上运行这个程序,只有当用户按下返回键时才会停止。所以我尝试了

if User == "":
    Break

哪个可行,除了这会导致错误,因为 makearange 函数仅评估整数而不是用户输入的返回键。我怎样才能让它理解这种类型的输入? 谢谢

I am using a makearange function to input a start, stop, and increment range for an array i.e.

User = raw_input('Enter start,[stop],[increment]: ').split(',')
makearange = lambda a: numpy.arange(int(a[0]),int(a[1]),int(a[2]))
x = makearange(User)

However I am also using these numbers to run a program to create arrays of the squares and cubes of the inputted numbers. I am running this program on an infinite while loop, which only stops when the user hits the return key. So I have tried

if User == "":
    Break

Which would work except this results in an error because the makearange function only evaluates integers and not the user input of the return key. How can I get it to understand this type of input?
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千纸鹤 2024-12-09 07:08:59

不要立即尝试用逗号分割 User,而是先测试它是否为空字符串:

import numpy as np
import sys

user_input = raw_input('Enter [start,] stop[, increment]: ')
if user_input = '':
    sys.exit()
else:
    x=np.arange(*map(int,user_input.split(',')))

PS。 输入start,[stop],[increment]表明stopincrement是可选的。这是否意味着如果只给出一个参数,您希望范围从给定的数字开始并无限增加?这不适用于 numpy.arange 。也许您的意思是 start 是可选的,而 stop 是必需的。这与 numpy.arange 已经工作的方式完美契合。

Instead of immediately trying to split User on commas, test if it is the empty string first:

import numpy as np
import sys

user_input = raw_input('Enter [start,] stop[, increment]: ')
if user_input = '':
    sys.exit()
else:
    x=np.arange(*map(int,user_input.split(',')))

PS. Enter start,[stop],[increment] suggests that stop and increment are optional. Does that mean if only one argument is given, you want the range to start from the given number and increase infinitely? That's won't work with numpy.arange. Perhaps you meant the start to be optional, and the stop to be required. That would fit perfectly with the way numpy.arange already works.

滴情不沾 2024-12-09 07:08:59
makearange = lambda a: numpy.arange(int(a[0]),int(a[1]),int(a[2])) if len(a) == 3 else None

当然,您可以想出比数组长度更好的验证

makearange = lambda a: numpy.arange(int(a[0]),int(a[1]),int(a[2])) if len(a) == 3 else None

of course you can come up with a better validation than the length of the array

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文