让我看看我的病情:
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 *开头的数字?
答案 0 :(得分:1)
如果您要覆盖的范围很广,则可以检查数字是否在range()内。
不要多次转换为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")
它将打印1301、1303、1305、1307、1309的smth(由于in even
)。
其他答案:Asking the user for input until they give a valid response
答案 1 :(得分:1)
怎么样
if int(b) >= 1230 and str(b).startswith('130') and int(b) != 1250:
do something
else:
do something
答案 2 :(得分: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))
使用此功能,您可以找到以任何数字开头的任何列表