允许范围函数评估非数值表达式

时间:2011-08-31 11:20:22

标签: python arrays numpy while-loop

我使用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)

但是我也使用这些数字来运行程序来创建输入数字的正方形和立方体的数组。我在无限循环中运行此程序,该循环仅在用户点击返回键时停止。所以我试过了

if User == "":
    Break

除非这会导致错误,否则会产生错误,因为makearange函数只评估整数而不是返回键的用户输入。我怎样才能理解这种输入? 感谢

2 个答案:

答案 0 :(得分:1)

不要立即尝试在逗号上拆分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。 Enter start,[stop],[increment]表示stopincrement是可选的。这是否意味着如果只给出一个参数,您希望范围从给定数字开始并无限增加?这不适用于numpy.arange。也许你的意思是start是可选的,而stop是必需的。这完全符合numpy.arange已经有效的方式。

答案 1 :(得分:0)

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

当然,你可以提出比阵列长度更好的验证