【发布时间】:2019-01-21 20:54:55
【问题描述】:
你好!
我想检查用户输入的字符串是 True 还是 False,当用户输入 data.create {name} {value} 时我的程序会创建一个新变量,并且这个变量存储在一个名为“data”的列表中,通过一些脚本它可以获取名称和值并且可以使用type $data.{name}进行打印。
为了不产生任何问题或使程序更难,它格式化字符串,所以认为我创建了一个数据:data.create hllw Hello World,然后我在控制台上输入它:type $data.hllw,首先执行的事情是格式化程序,因为如果它在字符串中检测到$data,它会用点分隔并获取名称并检查变量是否存在于列表中。所以type $data.hllw变成type Hello World
现在,我想做一个if 命令,执行此操作:if $data.hllw == Hello World(如果 hllw var 是“Hello World”,则返回 True,否则返回 False),但我不知道这样做,我认为 eval() 可以提供帮助,但没有:if eval(args):(args = if 的参数)。
如果我尝试:
if args:
print('True!')
else:
print('False!')
它总是返回“真!” :(
谁能帮忙?我会很开心;)
【问题讨论】:
-
如果你只是
print(args),那里有什么?你用if args测试的只是它是真实的。None、False、数字零、空字符串和集合都是假的,但其他一切都是真的——字符串"False"、数字-1等 -
当我打印参数时它说:“$data.hllw == Hello World”(没有格式化程序),“Hello World == Hello World”(使用格式化程序)
-
好的,所以这显然是一个非空字符串,因此是真实的。这就是为什么您的代码会打印出
True!。 -
另外:你有一些不是 Python 的其他语言的表达式(
$data.hllw不是一个有效的 Python 标识符,Hello World周围没有引号不是一个有效的 Python 字符串) ,所以我不确定您为什么认为eval会有所帮助。您需要将其解释为……无论是什么语言。 -
听起来您在问如何为您发明的自定义语言编写解析器和解释器。这是一个不平凡的项目,不是有人可以在 StackOverflow 答案中涵盖的内容。
标签: python if-statement terminal console python-3.6