首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python的msvcrt.getch()的行为很奇怪:从标准输入中获取并存储了多个字符;结果值甚至不是字符串或字符类型

msvcrt.getch()是Python标准库中的一个函数,它用于从控制台中获取用户的单个字符输入。然而,msvcrt.getch()的行为在某些情况下可能会显得奇怪。

具体来说,msvcrt.getch()函数在Windows系统上的行为可能会有一些问题。在Windows中,当用户在控制台中输入一个字符时,msvcrt.getch()会立即返回该字符,但如果用户连续输入多个字符,则msvcrt.getch()会将所有字符都存储在内部缓冲区中,并返回第一个字符。这意味着如果用户在控制台上连续输入了"abc",msvcrt.getch()会返回字符"a",而"bc"则会存储在内部缓冲区中。

此外,msvcrt.getch()返回的值并不是字符串或字符类型,而是一个表示字符的整数值。这是因为在底层,msvcrt.getch()实际上是调用了C库中的getch()函数,并将其返回值转换为整数返回给Python。

针对这个问题,如果你需要获取并存储多个字符,你可以考虑使用其他方法,如使用input()函数来获取用户的输入并存储为字符串。如果你需要实时捕获单个字符输入,你可以考虑使用第三方库,如readcharkeyboard

总结起来,msvcrt.getch()是一个用于从控制台获取单个字符输入的函数,但在Windows系统上的行为可能会让人感到奇怪。它将连续输入的字符存储在内部缓冲区中,并返回第一个字符的整数值。为了解决这个问题,你可以选择其他方法来获取多个字符输入,或者使用第三方库来实现你的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 进阶指南(编程轻松进阶):九、深奥 Python 怪现象

这种行为也通过不存储重复小整数来节省内存,如图 9-1 所示。 图 9-1:Python 通过对单个整数对象(左)使用多个引用来节省内存,而不是对每个引用使用单独、重复整数对象(右)。...他们永远不会使用is操作符来比较整数、浮点数、字符串、布尔其他简单数据类型。...例如,尝试在交互 Shell 'c'和'at'创建'cat'字符串;您会注意到 CPython 创建最终'cat'字符串作为新字符串对象,而不是重用为spam创建字符串对象: >>> bacon...在交互式 Shell 输入以下内容: >>> all([]) True 最好将all([])理解为求值“列表所有项目都是真值”而不是“列表所有项目都是True”否则,您可能会得到一些奇怪结果...但这就是为什么学习计算机和软件奇怪角落和缝隙是有价值。当您代码出现错误崩溃时(或者甚至只是行为怪异,让您觉得“这奇怪”),您需要理解调试这些问题常见陷阱。

62340

Python 自动化指南(繁琐工作自动化)第二版:四、列表

列表数据类型 列表是一个包含有序序列多个。术语列表指的是列表本身(它是一个可以存储在变量像任何其他一样传递给函数),而不是列表内部。...用切片另一个列表获取一个列表 就像索引可以列表获取单个一样,切片可以以新列表形式列表获取多个。像索引一样,切片在方括号之间键入,但它有两个由冒号分隔整数。...实际上,你几乎不需要删除简单变量。del语句主要用于列表删除。 使用列表 当您第一次开始编写程序时,容易创建许多单独变量来存储一组相似的。...身份和id()函数 您可能想知道为什么前一节可变列表奇怪行为没有发生在整数字符串这样不可变上。我们可以用 Python id()函数来理解这一点。...包含元组字符串变量可以被新元组字符串覆盖,但这与原地修改现有不是一回事——比如说,append()remove()方法对列表所做。 变量不直接存储列表;他们将引用存储到列表

1.5K20
  • Python 进阶指南(编程轻松进阶):六、编写 Python 风格代码

    格式化字符串 字符串出现在几乎所有的计算机程序,不管是哪种语言。这种数据类型常见,所以有许多方法来操作和格式化字符串也就不足为奇。本节重点介绍几个最佳案例。...用 F 字符串格式化字符串 字符串格式化,字符串,是创建包含其他字符串字符串过程,在 Python 中有很长历史。...然而,这种方法有些复杂,会产生不可读代码,所以我不鼓励使用它。 但是 Python 3.6 开始, F 字符串(格式字符串缩写)提供一种更方便方法来创建包含其他字符串字符串。...如果您正在编写早期 Python 版本运行代码,请坚持使用format()字符串方法%s转换说明符。 制作列表浅层副本 切片语法可以容易地现有的字符串列表创建新字符串列表。...F 字符串以字母f作为字符串前缀,使用大括号来标记可以在字符串中放置字符串整个表达式)位置。

    94460

    30分钟学会用Python编写简单程序

    这样让我们知道该实际上是文本而不是数字(其他数据类型)。在最后一次交互,我们看到表达式"32"产生一个字符串,而不是一个数字。...在Python输入是用一个赋值语句结合一个内置函数input实现输入语句的确切形式,取决于你希望用户那里获取数据类型。...这种形式赋值初看奇怪,但实际上非常有用。这里有一个例子:假设有两个变量x和y,你希望交换它们。也就是说,你希望将当前存储在x存储在y,将当前存储在y存储在x。...但要记住,多个技巧不适用于字符串(非求值)输入,如果用户键入逗号,它只是输入字符串一个字符。逗号仅在随后对字符串求值时,才成为分隔符。...在Python,使用等号(=)表示将赋给变量。利用赋值,程序可以键盘获得输入Python还允许同时赋值,这对于利用单个提示获取多个输入很有作用。

    3.8K100

    27 个问题,告诉你Python为什么这么设计

    目录 为什么Python使用缩进来分组语句? 为什么简单算术运算得到奇怪结果? 为什么浮点计算不准确? 为什么Python字符串是不可变? 为什么在方法定义和调用显式使用“self”?...为什么 join()是一个字符串方法而不是列表元组方法? 异常有多快? 为什么Python没有switchcase语句? 难道不能在解释器模拟线程,而非得依赖特定于操作系统线程实现吗?...例如,在输入以下语句后: >>> x = 1.2 为 x 存储是与十进制 1.2 (非常接近) 近似,但不完全等于它。...任何动作都不会将 8 更改为其他,在 Python ,任何动作都不会将字符串 "8" 更改为其他。 为什么必须在方法定义和调用显式使用“self”? 这个想法借鉴 Modula-3 语言。...Python 1.6开始,字符串变得更像其他标准类型,当添加方法时,这些方法提供功能与始终使用String模块函数时提供功能相同。

    6.7K11

    Python 进阶指南(编程轻松进阶):八、常见 Python 陷阱

    修改列表项目就可以;它改变了列表容易出错条目的数量。 在列表安全地添加删除条目的另一种可能方法是列表末尾向后迭代到开头。...可变数据类型包括列表、字典、集合和由class语句构成对象。不要将这些类型对象作为默认参数放在def语句中。 不要用字符串连接来构建字符串Python 字符串是不可变对象。...循环每次迭代都会创建一个新字符串对象丢弃旧字符串对象:在代码,这看起来像是在一个forwhile循环中连接,如下所示: >>> finalString = '' >>> for i in...这不是 Python 陷阱;IEEE 754 标准是一种直接在 CPU 浮点电路实现硬件标准。...要将括号识别为一个元组 2 ,需要使用尾随逗号。在 Python ,逗号构成元组比括号多。 总结 每种语言都会出现沟通错误,甚至在编程语言中也是如此。Python 有几个陷阱会让粗心的人上当。

    1.6K50

    第3章 | 基本数据类型 | 布尔类型字符,元组,指针类型

    Python 允许在布尔上下文中使用字符串、列表、字典甚至 Set,如果这些是非空,则将它们视为 true。...作为替代方案,标准库函数 std::char::from_u32 可以接受任何 u32 返回一个 Option:如果此 u32 不是允许 Unicode 码点,那么 from_u32...标准库为字符提供一些有用方法,你可以在“char(原始类型)”和模块“std::char”下在线文档中找到这些方法。 assert_eq!...3.4 元组 元组是各种类型三元组、四元组、五元组等(因此称为 n-元组元组)。可以将元组编写为一个元素序列,用逗号隔开包裹在一对圆括号。...这对人类读者来说可能奇怪,不过一旦在多行列表末尾添加移除了条目(entry),在显示差异时就会更容易阅读。 为了保持一致性,甚至有包含单个元组。

    9210

    网盘分享内容总被无端和谐?来试试这个!

    但是时间长了还是会被和谐 盲猜百度可能是在字节级别对文件进行检查 所以就想到了通过打乱文件存储内容方式 是不是就可以解决这个问题了呢?...破解几乎是不可能 其次语言就选用python,比较简单灵活 最后是代码思路 拿到当前目录下所有的文件列表 递归遍历每一个文件做加(解)密处理 ## 代码实现 ### 加密程序 import...aes = AES.new(pad_key(key.encode()), AES.MODE_ECB) # 加密内容,此处需要将字符串转为字节...结果为字节类型 encrypted_data = aes.encrypt(pad(data)) with open(absolute_file + "_...aes = AES.new(pad_key(key.encode()), AES.MODE_ECB) # 加密内容,此处需要将字符串转为字节

    1.3K20

    python零基础系统学习教程之Python 变量类型

    点击蓝字“python教程”关注我们哟! Python 变量类型 变量存储在内存。这就意味着在创建变量时会在内存开辟一个空间。...基于变量数据类型,解释器会分配指定内存,决定什么数据可以被存储在内存。 因此,变量可以指定不同数据类型,这些变量可以存储整数,小数字符。...标准数据类型 在内存存储数据可以有多种类型。 例如,一个人年龄可以用数字来存储,他名字可以用字符存储Python 定义一些标准类型,用于存储各种类型数据。...在 Python3.X 版本 long 类型被移除,使用 int 替代。 Python字符串 字符串串(String)是由数字、字母、下划线组成一串字符。...如果你要实现从字符串获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应字符串,其中下标是 0 开始算起,可以是正数负数,下标可以为空表示取到头尾。

    61820

    Python 变量类型详解

    文 | 豌豆 图 | 来源网络 变量存储在内存。这就意味着在创建变量时会在内存开辟一个空间。 基于变量数据类型,解释器会分配指定内存,决定什么数据可以被存储在内存。...因此,变量可以指定不同数据类型,这些变量可以存储整数,小数字符。 变量赋值 Python 变量赋值不需要类型声明。 每个变量在内存创建,都包括变量标识,名称和数据这些信息。...标准数据类型 在内存存储数据可以有多种类型。 例如,一个人年龄可以用数字来存储,他名字可以用字符存储Python 定义一些标准类型,用于存储各种类型数据。...python字串列表有2种取值顺序: 从左到右索引默认0开始,最大范围是字符串长度少1 从右到左索引默认-1开始,最大范围是字符串开头 如果你要实现从字符串获取一段子字符串的话,可以使用变量 [...头下标:尾下标],就可以截取相应字符串,其中下标是 0 开始算起,可以是正数负数,下标可以为空表示取到头尾。

    1.2K40

    python不相等两个字符串 if 条件判断为True详解

    理论上说,可使用<和<=等运算符比较任意两个对象x和y相对大小,获得一个真值,但这种比较仅在x和y类型相同相近时(如两个整数一个整数和一个浮点数)才有意义。...将整数与字符串相加毫无意义,检查一个整数是否小于一个字符串也是一样。 与赋值一样,Python也支持链式比较:可同时使用多个比较运算符,如0 < age < 100。...看不出什么问题,但最后一个示例结果奇怪:x和z相等,但x is z结果却为False。...不要将is用于数和字符串等不可变基本。鉴于Python在内部处理这些对象方式,这样做结果是不可预测。 in:成员资格运算符 与其他比较运算符一样,它也可用于条件表达式。...其他序列比较方式与此相同,但这些序列包含元素可能不是字符,而是其他类型

    6.1K10

    Python2和Python3一些语法区别

    text = raw_input() raw_input 接收则是你输入字符串,而不管你输是什么内容。如果你直接拿 raw_input 得到“数字”去比较大小,则会得到奇怪结果。...3里只有input函数,它接收你输入字符串,不管你输是什么。 text = input() 那么在3里,如何像2一样得到用户输入一个呢?...bytes 相当于python2str类型网页上抓取下来数据流也是该类型python3,要得到一个bytes类型变量,可以在字符串内容前面加入b得到,前提是该字符串内容是可以完全由...ASCII码表示,否则会出现语法错误 相当于Python2str类型网页上抓取下来数据流也是该类型Python3,要得到一个bytes类型变量,可以在字符串内容前面加入b得到,...问题:为何会出现乱码情况 unicode是表示世界上所有的字符, 但是其内部存储是以二进制位存储,比如你好unicode编码为\u4f60\u597d 但是我们所见到不是\u4f60\

    1.4K80

    使用Python进行数学建模(语言基础2)

    Python 解释器及丰富标准库,提供适用于各个主要系统平台源码机器码,这些可以到 Python 官网: https://www.python.org/ 免费获取,并可自由地分发。...Python 解释器易于扩展,可以使用 C C++(或者其他可以 C 调用语言)扩展新功能和数据类型Python 也可用作可定制化软件扩展程序语言。...这个列表最少也会有一个元素;如果没有给定输入参数,sys.argv[0] 就是个空字符串。如果给定脚本名是 '-' (表示标准输入),sys.argv[0] 就是 '-'。...在这种编码方式,世界上大多数语言字符都可以同时用于字符串字面值、变量函数名称以及注释——尽管标准只用常规 ASCII 字符作为变量函数名,而且任何可移植代码都应该遵守此约定。...例如: 第一行数标注字符串 0...6 索引位置,第二行标注对应索引。那么 i 到 j 切片就包括标有 i 和 j 位置之间所有字符

    87640

    Android项目重构之路:界面篇

    资源文件单一 Android提供各种资源文件,strings.xml用来存储字符串,arrays.xml用来存储字符串数组,colors.xml用来存储颜色,dimens.xml用来存储尺寸,等等...资源文件单一,是说所有相关资源信息要在资源文件里定义引用到代码布局文件里,而不是在代码布局文件里直接定义。...很多开发人员,为了图方便,应用界面中出现字符串经常在代码布局文件里直接定义,尺寸也是,这样造成结果就是,当某些字符串需要修改时,比如要支持国际化,一些尺寸需要修改时,通常是很多地方都要修改...因此,就必须规范好,应用界面字符串统一在strings.xml定义,颜色统一在colors.xml定义,尺寸统一在dimens.xml定义,代码布局里需要用到都去引用资源文件相应字段...资源文件分类 strings.xml文件用来存储应用所有字符串,包括页面标题,按钮文字,标签文字,提示文字等等,应该做好分类统一存放。

    89940

    Pythonsys模块功能与用法实例详解

    sys.displayhook调用在 交互式Python会话输入表达式结果。可以通过为其分配另一个单参数函数来自定义这些显示sys.displayhook。...它们含义是:type获取正在处理异常异常类型(类对象); value获取异常参数(其 关联第二个参数,如果异常类型是类对象,则始终为类实例); traceback 获取一个回溯对象(参见参考手册...这是Python 2.7及更高版本常见行为。否则,其行为方式与2.7之前Python版本相同。...如果脚本目录不可用(例如,如果以交互方式调用解释器或者标准输入读取脚本), path[0]则是空字符串,它指示Python首先搜索当前目录模块。...sys.winver 用于在Windows平台上形成注册表项版本号。它作为字符串资源1000存储Python DLL。该通常是前三个字符version。

    2K10

    Python 密码破解指南:0~4

    你将学习一些其他数据类型(比如第三章字符串),但是现在只要记住,任何时候我们谈论一个,这个是一个特定数据类型。通常只需查看是如何书写,就可以容易地识别数据类型。...第一次输入spam + 5 ➊ 时,表达式计算结果为20 ➋,因为你在变量spam存储15。...你也可以存储一个字符串,就像我们对spam变量所做那样,然后复制这个变量来代替 ➋。您甚至可以将复制字符串存储回同一个变量新变量。...+操作符可以做加法字符串连接。*操作符可以做乘法字符串复制。 使用索引字符串获取字符加密程序经常需要从字符串获取单个字符,这可以通过索引来完成。...大多数情况下,您代码将使用正索引,但有时使用负索引更容易。 使用切片字符串获取多个字符 如果你想从一个字符串得到多个字符,你可以使用切片来代替索引。

    45840

    图解python | 基础数据类型

    本文详细讲解Python变量赋值、数据类型以及数据类型转换。 变量存储在内存,这就意味着在创建变量时会在内存开辟一个空间。...基于变量数据类型,解释器会分配指定内存,决定什么数据可以被存储在内存。因此,变量可以指定不同数据类型,这些变量可以存储整数,小数字符。...4.标准数据类型 在内存存储数据可以有多种类型。 例如,一个人年龄可以用数字来存储,他名字可以用字符存储Python 定义一些标准类型,用于存储各种类型数据。...python字串列表有2种取值顺序: 从左到右索引默认0开始,最大范围是字符串长度少1 从右到左索引默认-1开始,最大范围是字符串开头 [Python数据类型 | 字符串(String)] 如果你要实现从字符串获取一段子字符串的话...,可以使用 头下标:尾下标 来截取相应字符串,其中下标是 0 开始算起,可以是正数负数,下标可以为空表示取到头尾。

    4.7K42

    Python 进阶指南(编程轻松进阶):七、编程术语

    所有对象都有、标识和数据类型是对象表示数据,比如整数42或者字符串hello。尽管有些令人困惑,但一些程序员将术语用作对象同义词,尤其是对于像整数字符串这样简单数据类型。...---- 变量隐喻:盒子与标签 很多入门书籍用盒子来比喻变量,这是一种过于简单化做法。容易把变量想象成一个存储盒子,就像图 7-1 那样,但是当提到引用时,这个比喻就站不住脚。...图 7-2 显示先前spam和eggs示例上标签。 图 7-2:变量也可以认为是标签。 因为多个变量可以引用同一个对象,所以该对象可以“存储”在多个变量。...虽然看起来字符串在bacon'Goodbye'变成了'Hello' 1 ,但实际上它被一个具有新 id 字符串对象覆盖了。...因为 Python +操作符可以将整数值相加,也可以将字符串连接起来,所以错误地使用字符串'4'和'2'代替整数导致非预期行为。 形参与实参 形参是def语句中括号之间变量名。

    1.6K20

    Pythonsys模块

    sys.displayhook调用在 交互式Python会话输入表达式结果。可以通过为其分配另一个单参数函数来自定义这些显示sys.displayhook。...它们含义是:type获取正在处理异常异常类型(类对象); value获取异常参数(其 关联第二个参数,如果异常类型是类对象,则始终为类实例); traceback 获取一个回溯对象(参见参考手册...这是Python 2.7及更高版本常见行为。否则,其行为方式与2.7之前Python版本相同。...如果脚本目录不可用(例如,如果以交互方式调用解释器或者标准输入读取脚本), path[0]则是空字符串,它指示Python首先搜索当前目录模块。...sys.winver 用于在Windows平台上形成注册表项版本号。它作为字符串资源1000存储Python DLL。该通常是前三个字符version。

    1.4K50
    领券