python如何判断用户输入回车键?--关于input()函数的前世今生

前言

最近在写代码的时候,需要判断一下用户是不是敲了回车键,于是写出了这样的代码:

if input('输入回车键进入程序') == '\n':
    print('开始程序。')

当时的目的是为了用户不输入任何内容,只敲回车键,无奈,print('开始程序。')永远也无法执行……

正确的代码应该是:

if input('输入回车键进入程序') == '':
    print('开始程序。')

== '\n'换成 == ''即可。

当敲下回车键时,表示输入结束了,而在input()函数中,默认是把回车键删除,所以最后输入的内容只剩下空的字符串。

既然都说到这了,那就一起看看 input() 的前世今生吧


input() 函数的前世今生

前世

python2.x中,有分raw_input()input()两个标准输入函数
python3.x中,只保留了input() 一个标准输入函数

简单说区别就是,在python2.x中,raw_input()输入的内容不管是数字还是其他字符都会转化为字符串,而input()只能输入纯数字
在python3.x中,input()可以输入数字和其他字符,但都会转化为字符串,相当于python2.x中的raw_input()
如果想要详细了解的话,可以看这篇文章,写得很详细啦:

https://blog.csdn.net/u011475210/article/details/77777482


今生

好了,就不聊那么多过去了,看看现在input()还有什么好玩的玩法。


玩法1

让input()遇到回车键也能持续输入

我们无法修改input()函数让它忽略掉回车键,但是我们可这样“忽悠”它:

txt = ''
while True:
    k = input()
    if k == 'quit':
        break
    txt += k + '\n'
print('*****以下是输出内容*****')
print('txt:\n'+txt)

请看效果:

在这里插入图片描述

这样我们就可以让input()好像忽略掉了回车键,可以持续输入内容,输入quit之后敲回车才结束

还有更简单的写法,看起来更高级:

txt = ''
for k in iter(input, 'quit'):
    txt += k+'\n'
print('*****以下是输出内容*****')
print(txt)

玩法2

限制用户的输入内容,比如只能输入字母

方式1:在输出结果上进行过滤,可以用正则表达式实现。

import re
while True:
    txt = input()
    txt = re.sub('[^a-zA-Z]','',txt)
    print(txt)

请看效果:
在这里插入图片描述

方式2:在键盘上输入上进行限制,那这样的话我们就要监听用户的键盘了
使用pynput第三方库可以对用户的键盘进行监听和操作。

from pynput.keyboard import Listener
import threading

def listening():
    def on_press(key):
        try:
            if not(65 <= key.vk <= 90): # 65~90是键盘a~z的编码值
                print('\b',end='') # \b是退格符,相当于键盘Backspace
        except AttributeError:
            pass
    with Listener(on_press=on_press) as listener:
        listener.join()

threading.Thread(target=listening).start()
while True:
    txt = input()
    print(txt)

请看效果:
在这里插入图片描述
这样的话就只能输入字母了,输入别的内容都会被删掉。


总结

虽然上面介绍的一些用法好像并没什么用,但是学习嘛
在这里插入图片描述

  • 40
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值