在下面的代码中,为什么没有将值分配给while循环和if语句?没有它,代码如何运行?
name = ""
while not name:
print ("Enter your name:")
name = input()
print ("How many guests will you have?")
numOfGuests = int(input())
if numOfGuests:
print ("Be sure to have enough room for all you guests.")
print ("Done")
为什么没有为while和if语句分配值?
答案 0 :(得分:1)
while循环检查布尔条件(真/假)。对于您而言,在开始循环之前,变量select 'field1'||chr(9)||'field2'
的值为空字符串,因此语句name
的计算结果为True。
将一个非空字符串添加到not name
后,您将发现语句name
的计算结果为False,因此您将退出while循环。
答案 1 :(得分:0)
在python中,无需明确将其与特定值进行比较即可评估值的“真实性”。判断真假的规则因对象而异。
[]
是False
。其他任何列表为True
。{}
是False
。其他任何字典都是True
。""
是False
。其他任何字符串是True
。None
:始终为False
。0
是False
。正数或负数为True
。答案 2 :(得分:0)
不确定您要问什么。
只要name
是空字符串,循环就会继续,前面的赋值确保第一次通过时都是正确的。
但是请注意,在name = input()
行之后没有检查该条件。这意味着即使您只按回车键并 leave name
为空,代码也会继续执行下一条语句,并询问您的来宾人数。我怀疑您想让这些 not 成为循环的一部分,这意味着应该将其与while
而不是print
对齐:
name = ""
while not name:
print ("Enter your name:")
name = input()
print ("How many guests will you have?")
numOfGuests = int(input())
if numOfGuests:
print ("Be sure to have enough room for all you guests.")
print ("Done")
这样,在您键入非空名称之前,代码将不会继续通过名称提示。
但是,如果您输入空白行或类似“数字”的数字,但仍会出现异常,则异常终止。
答案 3 :(得分:0)
您似乎希望看到类似而名称== false 或如果numOfGuests> 0:
if和while语句均检查是否为真。有时候这很明显,例如 numnumGuests> 0 。如果它大于0,那显然是对的;如果不是,那是错误的。
但是,当您考虑可以表示真假的所有方式时,则不需要显式语句。 如果numOfGuests 单独检查 numOfGuests 的评估结果是否为true。如果不是假,那是真的。如果值为 false,0,或“” -即为空字符串,则为false。 (任何其他空容器也应显示为false)
因此,在这种情况下,while循环将检查 name 是否为非空字符串(因此为实际名称),而if语句正在检查非零数量的来宾。 / p>