栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pycharm的Run窗体中的一次换行被当成了两次

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pycharm的Run窗体中的一次换行被当成了两次

今天在Pycharm中跑程序时突然发现连用两个input()竟然只有第一个会接收,第二个竟然无法接收,开始还以为是python的问题,但是在命令行中跑发现是正常的。

a=input()
b=input()
print(a,b)

在Pycharm中运行,然后输入:
abc
def

两次都是用回车换行,输出:
abc

如果再增加一个input:

a=input()
b=input()
c=input()
print(a,b,c)

再输入:
abc
def

会得到:
abc def

可见b是一个空字符串,而def被第三个input接收了。

因此猜测,从pycharm的Run窗体中输入换行会被当成两个换行,导致第二个input接收的字符串为空。

上面两段代码不管是在pycharm中的命令行中执行还是外部的命令行中执行,都是正常的,说明不是系统的问题,而是pycharm的问题。

因为input接收到换行会自动退出,所以无法查看原始输入,所以使用sys.stdin查看:

import sys
s = sys.stdin.read()
print([ord(i) for i in s])

输入:
a
b
c
(Ctrl+D)

得到:
[97, 10, 10, 98, 10, 10, 99, 10]

我们知道换行的ASCII码是10,可见果然是输入一次换行被当成了两次。

在命令行中执行同样的代码,得到的是预期中的:
[97, 10, 98, 10, 99, 10]

这个bug其实有点难理解,因为我们知道分行方式主要有3种:Windows的rn, Linux的n, Mac的r。这里的换行却被成了3种之外的nn。我的Pycharm是在Linux下的,右下角显示的也是LF(n),而我又试了改成另外两种,发现对这个bug毫无影响,重启后也没有变化。

考虑到我在之前安装了Pycharm中的插件Rainbow Brackets,可能因此出现了不兼容的bug,也可能是Ubuntu或VMware的bug。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/933972.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号