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

Python 如何在此代码中定义布尔变量?,python,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!

您好,我最近开始学习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!")

我对此做了一个小修改:

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。只需将答案放低一点,并用“是”语句进行检查。像这样,无论是“是”还是“是”,它都会起作用

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

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

rain = input('is it raining outside?: ').lower() == "yes"
if rain:
  ...
rain = input('is it raining outside?: ').lower()
if rain == "yes":
  ...
rain
不应为布尔值:

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

这不起作用,因为:

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

>bool(“”)
假的
>>>bool(“foo”)
真的
>>>布尔(“是”)
真的
>>>布尔(“否”)
真的
>>>布尔(“假”)
真的
要解决此问题,您可以

  • 定义自己的
    str\u bool
    函数,例如
  • def str_bool(s):
    如果s.lower()在[“y”、“yes”、“yes”、“true”、“positive”、“1”]中:
    返回真值
    elif s.lower()在[“n”、“no”、“nope”、“false”、“negative”、“0”]中:
    返回错误
    其他:
    raise VALUERROR(“字符串%s不可bool”%s)
    
  • 将条件评估结果分配给您的
    rain
    变量:
  • rain=input(‘外面在下雨吗?:’).lower()在[“是”、“是”、“是”、“正”、“1”]
    如果下雨:
    打印(“我要在雨中跳舞!”)
    其他:
    打印(“我要在阳光下跳舞!”)
    

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

    提示:
    rain==“Yes”
    是一个布尔值。第二个提示-
    rain
    永远不会等于“Yes”。。。你在它的内容上做了一个
    .lower()
    “它一直说我应该定义一个布尔变量”这是什么意思?
    是它吗。显然存在一些未知的需求,除非已知这些需求,否则任何答案都是猜测。关闭它,直到它形成要回答的形状,这似乎与要做的事情完全一样。
    ==“yes”
    已经返回一个
    bool
    bool()
    ,这是不必要的。是。你是对的。忘了移除。我会编辑。如果用户回答“可能”怎么办?说真的,我并没有投你反对票,但这并不能回答问题,因为在某些变量中存储实际的布尔值显然有一些要求。请仔细阅读问题@MisterMiyagi从表面上看很容易看出,在OP的
    if
    语句尝试的情况下,布尔变量没有被使用。虽然有一点周而复始,但这个答案满足了这一要求
    如果rain:
    其中
    rain
    是一个布尔变量,则是正确的答案。@jnevil由于Python本身不发出该错误,因此不清楚检查代码的工具需要什么。问题已经定义了一个布尔变量,这显然是不够的。