Python如何实现仅拒绝空/全空格字符串、接受含非空格字符的输入校验
原有代码错误原因
你写的x.count('') >= 1存在逻辑偏差:在Python中,空字符串是任意字符串的子串,调用count('')返回的结果始终是「字符串长度 + 1」,哪怕是输入'a',返回值也为2,所以这个条件会永久成立,直接拒绝所有合法输入。
修正方案
你可以直接使用字符串内置的strip()方法实现需求:该方法默认会移除字符串首尾的所有空白字符(空格、制表符、换行符等),如果处理后的结果为空,就说明原输入是空字符串或者全由空白字符组成。
修正后的代码如下:
x = input() while not x.strip(): print('type non empty text only') x = input()
效果验证
对应你给出的示例,该逻辑表现完全符合要求:
- 输入
'':strip()处理后仍为空,not ''判定为真,触发拒绝 - 输入
' ':strip()处理后为空,触发拒绝 - 输入
' a ':strip()处理后为'a',判定为假,退出循环接受输入
如果你仅需要过滤空格、不需要处理其他空白字符,把判断条件改成not x.strip(' ')即可。
内容的提问来源于stack exchange,提问作者saZ
相关产品推荐
相关产品推荐

