2011-08-31 42 views
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) 

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

if User == "": 
    Break 

除了这将导致一个错误,将工作,因为makearange函数只计算整数,而不是返回键的用户输入。我怎样才能理解这种类型的输入? 感谢

回答

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已经有效的方式。

+0

这种类型的条件长度的更好的验证'如果USER_INPUT =“”!'并没有真正涵盖非空非的可能性 - 可输入的输入。 – eumiro

+0

没问题,但既然这不是问题的核心,我决定不去探讨。 – unutbu

+0

对不起,我有单独的问题,我已被要求停止和递增可选,通过设置默认值为两个,虽然我还没有解决如何做到这一点,因为我完全是新的编程。 – Candace

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

你能想出比数组