python - 取代用户在python 3.0中输入字符串后需要按回车

标签 python input

我一直在尝试在 python 3.0 中创建一个简单的剪刀石头布游戏——对于任何学习编程的人来说都是非常标准的任务。

但是,当我完成某个点时,我想,“哇,那太棒了”,或者“这样做会很酷!”所以无论如何,我继续在项目的基础上发展......

我开发了一个菜单,一个单人游戏对战电脑,刚刚完成了多人游戏。但是,我意识到,多人游戏并不是很有效。它只是不像游戏的模拟版本那样工作。

目前,它会要求玩家 1 的输入,然后是玩家 2 的输入,比较它们,然后吐出结果和当前分数。我宁愿发生的是程序要求两个玩家同时输入并且两个玩家同时输入他们的选择。

我知道我可以很容易地做到这一点,只需获取第一个和第二个答案的索引并比较 2 个输入——很简单。但我宁愿发生的是,在两个玩家同时输入他们的一个字符答案后(r 代表石头,p 代表布,或 s 代表剪刀),然后程序将自动输入。不需要有人按回车键。

输入将由已输入 2 个字符的事实决定。

我想我的问题是: 有没有什么方法可以规定什么可以用作“输入”的输入?

最佳答案

我认为您正在寻找类似 msvcrt.getch() 的内容.

如果你只需要它用于 Windows,那很简单:

from msvcrt import getch
letter1 = getch()
letter2 = getch()        
print("Pressed", letter1, "and", letter2)

对于 Linux,它有点复杂:

import sys, tty, termios
def getch():
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    try:
        tty.setraw(sys.stdin.fileno())
        ch = sys.stdin.read(1)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    return ch

letter1 = getch()
letter2 = getch()        
print("Pressed", letter1, "and", letter2)

请注意,它们不会回应按下的字母。如果两个玩家都在同一台计算机上,这实际上可能对该游戏有益,但您始终可以在收到值后手动打印它。

对于使用多态性来选择正确版本的跨平台解决方案,请查看此配方:

http://code.activestate.com/recipes/134892/

关于python - 取代用户在python 3.0中输入字符串后需要按回车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516272/

相关文章:

python - 数字签名中pdf的消息摘要

Python Argparse 添加文本到用法消息

css - 当输入在标签标签内时,将单选输入样式设置为按钮

python - celery worker sleep 无法正常工作

python - 实现一种让我的 tron 角色无法通过自身的方法

python - 使用来自 excel (XLRD) 的数据使用 matplotlib 绘制图形

jquery - HTML5 输入类型数字在 "9"之后出现奇怪的行为

javascript - 将输入拆分到单独的框中

java - 扫描仪输入阵列

java - 尝试编写一个方法来检查 JAVA 中的用户输入,得到 NoSuchElementException