当前位置: 首页 > 知识库问答 >
问题:

在python中重复y/n问题的有效方法[duplicate]

葛学民
2023-03-14

我正在寻找一种实现“按Y继续,按N取消”提示的方法。

我目前的实施方式是

Prompt = None
# Loop until the user inputs a valid answer
while Prompt not in ("yes", "y", "n", "no"):
    Prompt = input("Do you wish to continue? answer y or n\n")
    if Prompt == 'y' or == 'yes':
        state = 2 # switch state to processing state
    elif Prompt == 'n' or == 'no': # cancel
        break

有没有更有效的方法来实现此提示?

共有3个答案

白迪
2023-03-14

你的代码看起来不对,也许我能帮上忙。试试我的代码

Prompt = None
while Prompt not in ("yes", "y", "n", "no"): #loop until the user inputs a valid answer
        Prompt = input("Do you wish to continue? answer y or n\n")
        if Prompt in ('y', 'yes'):
            state = 2 # switch state to processing state
        elif Prompt in ('n', 'no'): #cancel
            break

提示符=='y'或=='yes'提示符=='n'或=='no':行不正确,因为它应该是提示符=='y'或提示符=='yes'提示符=='n'或提示符=='no'。但我更喜欢在操作符中使用

杨柏
2023-03-14

什么是无效的?

您可以通过多种方式重新键入此代码,但这些方式都与效率无关。更大的问题是你为什么会关心这个。

不要迷失在努力让事情变得高效,尤其是如果你是初学者。编程不像历史课,总是有一个正确的答案,你必须找到。编程是一种像铅笔一样的工具,你可以用它在历史课上写下答案;在你写作的时候,有很多方法可以拿着铅笔。

编辑

如果你有一个场景,你有多个提示,你可以考虑去掉if语句,设置一个像字典一样的界面,将每个用户的提示响应映射到一个处理特定提示的函数,你会有这样的东西

def PrintHello():
    print('Hello')

LookUpFunction = {'hello':PrintHello}

def HandleUser():
    try:
        return LookUpFunction[input('What would you like to do ? ')]
    except KeyError:
        return None


while True:
    func = HandleUser()
    if(func):
        func()
        break

您还可以创建函数,这些函数是用户提供的输入字符串的名称别名,然后使用localsglobal als调用这样的函数。

def c_hello():
    print('Hello There')
def c_quit():
    print('Goodbye')


command = locals()['c_'+input('What would you like? ')]
command()

因此,在这两种情况下,您所要做的就是提供处理特定提示的函数

寇丰
2023-03-14

是的,只需尝试以下方法。

while True:
    Prompt = input("Do you wish to continue? answer y or n\n")
    if Prompt in ['y', 'yes']:
        state = 2 # switch state to processing state
    elif Prompt in ['n', 'no']:
        break
 类似资料:
  • 我使用了这段代码来随机化1000000个数字而不重复。这是我目前所掌握的。 这种方法太慢了,你能告诉我如何更有效地完成这项工作吗?我感谢所有答复。问候

  • 本文向大家介绍python 解决selenium 中的 .clear()方法失效问题,包括了python 解决selenium 中的 .clear()方法失效问题的使用技巧和注意事项,需要的朋友参考一下 最近在使用selenium做一个数字货币的自动化脚本时,遇到一个问题就是okex网站的input使用clear()方法居然无法清空,但是后来试了好多次发现方法是可以使用的,而且这个网站修改inpu

  • 我正在努力理解我的代码在这个Leetcode问题上出了什么问题。 问题:给定一个字符串,确定它是否是回文,只考虑字母数字字符,忽略大小写。 现在,我通过了108/476个案例,我没有通过这个测试:“一个人,一个计划,一条运河:巴拿马”。 这是我的代码,请帮我识别问题!

  • 在android studio中,不能从静态上下文引用非静态方法“put(java.lang.String,java.lang.String)”是什么意思?

  • 本文向大家介绍用Python解决x的n次方问题,包括了用Python解决x的n次方问题的使用技巧和注意事项,需要的朋友参考一下 我考虑到了x的所有n次的情况,下面的代码有可能是不完美的,但是肯定是对的。 以上这篇用Python解决x的n次方问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 如何检查字典是否为空?更具体地说,我的程序从字典中的某个键开始,我有一个循环,循环迭代直到字典中有键为止。整体上algo是这样的: 从Dict中的某个键开始 当Dict中有键时 对Dict中的第一个键执行某些操作 删除第一个键 请注意,上面循环中的可能会向字典中添加新键。我尝试了中的值 但在while循环中添加了一些新键,因此它会失败。