基本上,我需要检查var是否为ASCII中的字母字符。 所以r_upper是高位字符的范围。 r_lower是小写字符的范围。 而32是空间值。 (稍后将实现.strip())
我从来没有做过这样的事情,所以错误很明显,或者这不可能吗?
r_upper = range(65, 91)
r_lower = range(97, 123)
var = 95
if var not in r_lower or var not in r_upper or var !== 32:
print("Worked")
我也尝试过:
if not var in r_lower or not var in r_upper or var !== 32:
也有语法错误。
也许有一种方法可以使整个IF语句不做或不做
答案 0 :(得分:2)
这就足够了:
import string
var = 95 ## chr(95)='_'
if chr(var) not in string.ascii_letters+' ':
print 'worked' ## not an alphabetic nor space character
编辑: 在列表中添加了空格(ascii_letters是包含...字母的字符串)
答案 1 :(得分:2)
每个人都没有抓住重点。尽管有一些更好的方法可以实现,但是没有人指出您代码中的真正错误:
由于您希望变量为ascii字母,因此不能是任何这些条件,因此您想使用and
布尔运算符,而不是or
:
if var not in r_lower and var not in r_upper and var != 32:
那会很好。...如果您想使用or
,那么条件会改变:
if not(var in r_lower or var in r_upper or var == 32):
答案 2 :(得分:1)
您的问题是var !== 32
,应该是var != 32:
。
您可以这样简化:
r_upper = set(range(65, 91))
r_lower = set(range(97, 123))
r_all = r_upper.union(r_lower)
r_all.add(32)
然后像这样进行检查:
if var not in r_all:
答案 3 :(得分:1)
使用add=TRUE
也是可行且性能良好的解决方案:
any()
答案 4 :(得分:-1)
我真的没有在那儿找到for子句,因为var不是一个可变量,并且正如每个人都解释的那样,运算符是!=
,所以它不是javascript。
r_upper = range(65, 91)
r_lower = range(97, 123)
var = 95
if (var not in r_lower) or (var not in r_upper) or (var != 32):
print("Worked")
如果要混淆条件,最好在这些条件上优先显示(类似于数学),请使用括号,因此:
首先,您要评估not in
编码的布尔值,然后对or
进行第二个not in
条件的结果求值,对第三or
进行{{1}的结果求值}条件