鱼C论坛

 找回密码
 立即注册
查看: 2665|回复: 6

[已解决]如何增加只能输入可以或不可以的限制

[复制链接]
发表于 2023-4-11 07:51:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. while True:
  2.     answer = input("主人,我可以退出循环了吗?")
  3.     if answer == "可以!":
  4.         break
  5.     print("哎,好累~~~")
复制代码


最佳答案
2023-4-11 08:18:43
宇少1100 发表于 2023-4-11 08:12
感谢,刚才自几想到这问题后也尝试了一下,但连break都不好用了.再帮我看看呗.

在你的代码中,问题出在这一行:

  1. answer = "可以" or "不可以"
复制代码


这里的问题是,你使用了 or 运算符来尝试为 answer 变量赋值。然而,这种用法是错误的。

在 Python 中,or 运算符用于将两个布尔表达式连接起来。它会计算第一个表达式的布尔值,如果为 True,则返回第一个表达式的结果;如果为 False,则返回第二个表达式的结果。

在这个例子中,"可以" 和 "不可以" 都是非空字符串,它们在布尔上下文中都被视为 True。

因此,"可以" or "不可以" 这个表达式会计算为 "可以",因为第一个表达式的布尔值为 True。

所以,实际上你的代码等同于:

  1. answer = "可以"
复制代码


对你的代码修改如下:
  1. while True:
  2.     answer = input("主人,我可以退出循环了吗? (请输入'可以'或'不可以')")
  3.    
  4.     if answer == "可以":
  5.         break
  6.     elif answer == "不可以":
  7.         print("哎,好累~~~")
  8.     else:
  9.         print("请输入'可以'或'不可以'")
复制代码


在这个修改后的示例中,移除了 answer = "可以" or "不可以" 这一行,而是在 if 语句中检查用户输入的答案。

如果答案是 "可以",则跳出循环;如果答案是 "不可以",则输出 "哎,好累~~~";否则,提示用户输入 "可以" 或 "不可以"。

这样,你就可以实现只能输入 "可以" 或 "不可以" 的限制。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-11 07:59:13 | 显示全部楼层
在你的代码中,只需添加一些条件来限制用户输入 "可以" 或 "不可以"。你可以使用 while 循环来实现这一点。

这里是一个修改后的示例:

  1. while True:
  2.     while True:
  3.         answer = input("主人,我可以退出循环了吗? (请输入'可以'或'不可以')")
  4.         if answer in {"可以", "不可以"}:
  5.             break
  6.         else:
  7.             print("请输入'可以'或'不可以'")

  8.     if answer == "可以":
  9.         break
  10.     print("哎,好累~~~")
复制代码


在这个修改后的示例中,我们添加了一个内部 while 循环,它会不断询问用户输入,直到输入的答案为 "可以" 或 "不可以"。

这样,你就可以实现只能输入 "可以" 或 "不可以" 的限制。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-11 08:12:22 | 显示全部楼层
isdkz 发表于 2023-4-11 07:59
在你的代码中,只需添加一些条件来限制用户输入 "可以" 或 "不可以"。你可以使用 while 循环来实现这一点。 ...

感谢,刚才自几想到这问题后也尝试了一下,但连break都不好用了.再帮我看看呗.
  1. answer = "可以" or "不可以"
  2. while True:
  3.     answer = input("主人,我可以退出循环了吗?")
  4.     if answer == "可以!":
  5.         break
  6.     print("哎,好累~~~")
复制代码

   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-11 08:16:19 | 显示全部楼层
isdkz 发表于 2023-4-11 07:59
在你的代码中,只需添加一些条件来限制用户输入 "可以" 或 "不可以"。你可以使用 while 循环来实现这一点。 ...

还有内部我要是想嵌套for的死循环呢?又该如何写代码?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-11 08:18:43 | 显示全部楼层    本楼为最佳答案   
宇少1100 发表于 2023-4-11 08:12
感谢,刚才自几想到这问题后也尝试了一下,但连break都不好用了.再帮我看看呗.

在你的代码中,问题出在这一行:

  1. answer = "可以" or "不可以"
复制代码


这里的问题是,你使用了 or 运算符来尝试为 answer 变量赋值。然而,这种用法是错误的。

在 Python 中,or 运算符用于将两个布尔表达式连接起来。它会计算第一个表达式的布尔值,如果为 True,则返回第一个表达式的结果;如果为 False,则返回第二个表达式的结果。

在这个例子中,"可以" 和 "不可以" 都是非空字符串,它们在布尔上下文中都被视为 True。

因此,"可以" or "不可以" 这个表达式会计算为 "可以",因为第一个表达式的布尔值为 True。

所以,实际上你的代码等同于:

  1. answer = "可以"
复制代码


对你的代码修改如下:
  1. while True:
  2.     answer = input("主人,我可以退出循环了吗? (请输入'可以'或'不可以')")
  3.    
  4.     if answer == "可以":
  5.         break
  6.     elif answer == "不可以":
  7.         print("哎,好累~~~")
  8.     else:
  9.         print("请输入'可以'或'不可以'")
复制代码


在这个修改后的示例中,移除了 answer = "可以" or "不可以" 这一行,而是在 if 语句中检查用户输入的答案。

如果答案是 "可以",则跳出循环;如果答案是 "不可以",则输出 "哎,好累~~~";否则,提示用户输入 "可以" 或 "不可以"。

这样,你就可以实现只能输入 "可以" 或 "不可以" 的限制。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-11 08:22:04 | 显示全部楼层
宇少1100 发表于 2023-4-11 08:16
还有内部我要是想嵌套for的死循环呢?又该如何写代码?

如果你想在内部嵌套一个 for 循环的死循环,可以使用 itertools 模块中的 itertools.cycle() 函数,它可以创建一个无限迭代器。

你可以将其与 for 循环结合使用,以实现内部死循环。以下是一个示例:

  1. import itertools

  2. while True:
  3.     for _ in itertools.cycle([1]):  # 使用 itertools.cycle() 创建一个死循环
  4.         answer = input("主人,我可以退出循环了吗? (请输入'可以'或'不可以')")
  5.         
  6.         if answer == "可以":
  7.             break
  8.         elif answer == "不可以":
  9.             print("哎,好累~~~")
  10.         else:
  11.             print("请输入'可以'或'不可以'")
  12.     else:
  13.         # 当 for 循环内部的 break 语句被执行时,else 语句将不会被执行
  14.         # 这意味着我们可以使用另一个 break 语句来跳出外部的 while 循环
  15.         break
复制代码


在这个示例中,我们使用 itertools.cycle([1]) 创建一个无限迭代器。

这会导致 for 循环无限次地迭代,从而创建一个死循环。当用户输入 "可以" 时,内部循环的 break 语句会被执行,跳出 for 循环。

然后,外部 while 循环的 else 语句将不会被执行,因此另一个 break 语句会被执行,从而跳出外部 while 循环。

请注意,使用 itertools.cycle() 创建死循环并不是唯一方法,也可以使用内部的 while 循环,如我之前给出的示例。然而,这里提供了一个使用 for 循环的备选方案。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-11 20:02:22 | 显示全部楼层
2个问题,1.根据代码当输入可以时确实会执行break跳出内部死循环,但实际并没有
            2.外层的break缩进好像有问题,它是else下的break,所以外层循环无法退出,但我也尝试了它于外层else缩进相同,结果报错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 22:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表