Python: проверить условие в количестве, начинающемся с 130 * в списке

Позволяет увидеть, что у меня есть условие:

a = int(b) >= 1230 and int(b) not in [1300, 1305, 1250]

Здесь список может иметь несколько значений [1300,1303,1306,1307]и т. Д. Поэтому я хочу проверить:

if int(b) >= 1230 and int(b) = 130* and int(b) != 1250:
    do something
else:
    so something

Как я могу проверить число, начинающееся с 130 *?

python,

0

Ответов: 3


1

Вы можете проверить, находится ли число внутри диапазона (), если у вас есть непрерывный диапазон для покрытия. Не конвертируйте в int несколько раз, сохраните значение int bAsInt = int(b)и используйте это.

Если вы хотите проверить отдельные одиночные значения, используйте set (), если у вас есть 4 или более значений - быстрее поиск списка:

even = {1300,1302,1304,1306,1308}

for number in range(1299,1311):
    # print(number," is 130* :", number//10 == 130 ) # works too, integer division
    print(number," is 130* :", number in range(1300,1310), 
          " and ", "even" if number in even else "odd")

Вывод:

1299  is 130* : False  and  odd
1300  is 130* : True  and  even
1301  is 130* : True  and  odd
1302  is 130* : True  and  even
1303  is 130* : True  and  odd
1304  is 130* : True  and  even
1305  is 130* : True  and  odd
1306  is 130* : True  and  even
1307  is 130* : True  and  odd
1308  is 130* : True  and  even
1309  is 130* : True  and  odd
1310  is 130* : False  and  odd

Примите значение от пользователя и сравните :

Может быть решена так:

def inputNumber():
    # modified from other answer, link see below       
    while True:
        try:
            number = int(input("Please enter number: "))
        except ValueError:
            print("Sorry, I didn't understand that.")
            continue
        else:
            return number

b = inputNumber()

even = {1300,1302,1304,1306,1308}

if b > 1230 and b not in even and b in range(1300,1310):
    #  r > 1230 is redundant if also b in range(1300,1310)
    print("You won the lottery")

Он напечатает smth за 1301, 1303, 1305, 1307, 1309 (из-за in even).


Другой ответ: запрашивать пользователя для ввода, пока они не дадут действительный ответ


1

Как насчет

if int(b) >= 1230 and str(b).startswith('130') and int(b) != 1250:
    do something
else:
    do something

0

Вы также можете использовать это

def start_with(nub, start, stop):
    return [x for x in range(start,stop) if str(x).startswith(str(nub))]

print(start_with(130, 1, 5000))

используя эту функцию, вы можете найти любой список, начинающийся с любого числа

питон,