Python eval 计算器中的停止字母输入

Python stop letter inputs in eval calculator

所以,我正在为学校制作一个 eval 计算器,但我不能让它工作,因为你不能输入字母。我尝试使用列表,if/else,“包含”,但没有任何效果。这是带有contains的代码,即使代码中包含字母,它仍然执行“else”行:

if calc.__contains__('a'"b""c""d""e""f""g""h""i""j""k""l""m""n""o""p""q""r""s""t""u""v""w""x""y""z""A""B""C""D""E""F""G""H""I""J""K""L""M""N""O""P""Q""R""S""T""U""V""W""X""Y""Z""!""#""$""%""&""\"""'""("")"",""."":"";""<""="">""?""@""[""]""^""_""`""{""|""}""~"")"":"):
    print('Test - contains letters')
else:
    print("Answer: " + str(eval(calc)))

您可以尝试使用 all。这缩短了您的病情,并且非常明确地说明了您所追求的:

if all(c.isnumeric() for c in your_str):
    # do stuff if it's all numbers

您可以使用正则表达式。下面检查calc.

中是否有英文字母
import re
calc = "123abc"
list_of_letters_in_calc = re.findall('[a-zA-Z]', calc)
print (list_of_letters_in_calc)
if list_of_letters_in_calc:
    print('calc contains letters')
else:
    print("calc contains no letters")```