Как использовать переменную float с функцией range в python? - PullRequest
0 голосов
/ 16 мая 2018

Описание: У меня есть три переменные a, x и y.Я хочу применить следующее, если переменная a в диапазоне (x, y) напечатает переменную a

Код:

a = "0.50"
x = "-14.40"
y = "0.50"

for a in range(int(x), int(y)):
    print a

Ошибка (конечно):

ValueError: invalid literal for int() with base 10: '-14.40'

Pythonista Мне нужна ваша помощь здесь, пожалуйста !!

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

из комментариев

Мне нужно проверить, находится ли диапазон x и y или нет.

Тогда сделай

a = "0.50"
x = "-14.40"
y = "0.50"

if float(x) <= float(a) <= float(y):  # checks a is between x and y (inclusive)
     # do something

range делает что-то совсем другое. Это для создания итераторов, которые мы можем использовать в for циклах, например:

for i in range(4):
    print(i * 2)
0
2
4
6
0 голосов
/ 27 апреля 2019

Вы можете использовать numpy arange.

import numpy as np
r = np.arange(-14.4,0.5, 0.5)

def isinside(x):
if x in r:
    print ("x")
else:
    print ("x no in a")

isinside(-12)

возвращает

x no in a    

Если вы хотите напечатать всю серию

print ([round(x) for x in r])# round to avoid long numbers

Дополнительная информация https://pynative.com/python-range-for-float-numbers/

0 голосов
/ 16 мая 2018

Функция Python 2 range не имеет значения для этой задачи. Вам просто нужно преобразовать эти строки в числа с плавающей точкой и выполнить простые сравнительные тесты. Например,

a = "0.50"
x = "-14.40"
y = "0.50"

afloat = float(a)
if float(x) <= afloat and afloat <= float(y):
    print a  

выход

0.50

Это можно написать более просто (и более эффективно), используя цепочку сравнения Python.

a = "0.50"
x = "-14.40"
y = "0.50"

if float(x) <= float(a) <= float(y):
    print a

FWIW, в Python 3 объект range может быть полезен для проверки членства в диапазоне, но он не будет полезен для вашего случая. Например,

>>> r = range(1, 10, 2)
>>> list(r)
[1, 3, 5, 7, 9]
>>> 3 in r
True
>>> 4 in r
False
>>> 3.5 in r
False
...