如何在此代码中定义布尔变量?

2024-06-16 10:34:07 发布

您现在位置:Python中文网/ 问答频道 /正文

您好,我最近开始学习python3,在我正在学习的课程中,它要求我使用bool变量执行if-else语句

我已经编写了我的代码,并检查了代码所需的所有标准,但它一直说我应该定义一个布尔变量,而我一辈子都无法弄清楚它想要我做什么

这是我的密码:

rain = bool(input('is it raining outside?: ').lower())
if rain == "Yes":
  print("I'm going to dance in the rain!")
else:
  print ("I'm going to dance in the sun!")

Tags: theto代码in标准if语句else
3条回答

这不起作用,因为:

在Python中,bool(…)为所有非空字符串返回True。例如:

>>> bool("")
False
>>> bool("foo")
True
>>> bool("yes")
True
>>> bool("no")
True
>>> bool("False")
True

要解决此问题,您可以

  1. 定义自己的str_bool函数,例如
def str_bool(s):
    if s.lower() in ["y", "yes", "yeah", "true", "positive", "1"]:
        return True
    elif s.lower() in ["n", "no", "nope", "false", "negative", "0"]:
        return False
    else:
        raise ValueError("string %s is not bool-able" % s)
  1. 将条件评估的结果分配给rain变量:
rain = input('is it raining outside?: ').lower() in ["yes", "y", "yeah", "positive", "1"]
if rain:
  print("I'm going to dance in the rain!")
else:
  print ("I'm going to dance in the sun!")

第二个当然不能处理用户输入maybe的情况——第一个显然更好更干净

将输入转换为布尔值,然后与字符串进行比较

rain应在赋值时进行比较,以获得布尔值:

rain = input('is it raining outside?: ').lower() == "yes"
if rain:
  ...

或者rain不应该是布尔值:

rain = input('is it raining outside?: ').lower()
if rain == "yes":
  ...

我对此做了一个小修改:

rain = input('is it raining outside?: ')
if rain.lower() == "yes":
    print("I'm going to dance in the rain!")
else:
    print ("I'm going to dance in the sun!")

您不需要声明为bool。只需将答案放低一点,并用“是”语句进行检查。像这样,无论是“是”还是“是”,它都会起作用

相关问题 更多 >