gpt4 book ai didi

python - 如何在 input() 进行时访问 input() 函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:52 30 4
gpt4 key购买 nike

我有一个与用户交流的程序。我正在使用 input() 从用户那里获取数据,但是,我想告诉用户,例如,如果用户输入脏话,我想打印 You are swearing!立即删除它! 用户正在输入。

如您所知,首先 Python 会等待 input() 完成。我的目标是在完成之前访问 input() 然后我可以打印 你在发誓!立即删除它! 在用户键入时。

我的程序中有太多指令和函数,所以我将编写一个与我的主要问题相关的示例。

print ("Let's talk..")
isim=input("What's your name?: ")
print ("Hi there {}.".format(isim))

no=["badwords","morebadwords"]

while True:
user=input(u">>>{}: ".format(isim)).lower()
for ct in user.split():
if ct in no:
print ("You are swearing! Delete it immediately! ")

但它不起作用,因为 Python 首先等待 user 输入完成。如何在用户输入时执行此操作? -Python 3.4,Windows-

最佳答案

我在这方面没有太多经验,你可能可以找到一些包来做你想做的事。但一般来说,您需要实现一些行编辑,并在实现它时扫描输入。

getch 的想法功能是使您能够在每次按键后获得回调。该代码是 unix 和 windows 之间的跨平台。要使用它,只需从 getch 导入 getch。

只对退格键提供有限的支持,你可以这样写:

from getch import getch
import sys

def is_bad(text):
no=["badwords","morebadwords"]
words = text.split()
for w in words:
if w in no:
return True
return False

def main():
print 'Enter something'
text = ''
sys.stdout.write('')
while True:
ch = getch()
if ord(ch) == 13:
sys.stdout.write('\n')
break
if ord(ch) == 127:
if text:
text = text[:-1]
# first one to delete, so we add spaces
sys.stdout.write('\r' + text + ' ')
sys.stdout.write('\r' + text)
else:
text += ch
sys.stdout.write(ch)
if is_bad(text):
print 'You are writing something bad...'
print 'text = %s' % text



if __name__ == '__main__':
main()

应该通过拆分为更清晰的函数来改进代码,您还应该处理输入错误消息后的情况,但我希望您明白这一点。

希望对您有所帮助。

关于python - 如何在 input() 进行时访问 input() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27991589/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com