Разрешить функцию диапазона для оценки не числового выражения - PullRequest
0 голосов
/ 31 августа 2011

Я использую функцию 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 вычисляет только целые числа, а не вводит пользовательский ключ возврата.Как я могу получить это, чтобы понять этот тип ввода?Спасибо

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Вместо того, чтобы сразу пытаться разделить 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(',')))

PSEnter start,[stop],[increment] предполагает, что stop и increment являются необязательными.Означает ли это, что если указан только один аргумент, вы хотите, чтобы диапазон начинался с заданного числа и увеличивался бесконечно?Это не будет работать с numpy.arange.Возможно, вы подразумевали, что start является необязательным, а stop - обязательным.Это идеально подошло бы к тому, как numpy.arange уже работает.

0 голосов
/ 31 августа 2011
makearange = lambda a: numpy.arange(int(a[0]),int(a[1]),int(a[2])) if len(a) == 3 else None

конечно, вы можете придумать лучшую проверку, чем длина массива

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...