Python 即使用户以小写字母输入,如何以大写字母接收用户的输入?

Python 即使用户以小写字母输入,如何以大写字母接收用户的输入?,python,string,windows,uppercase,capitalize,Python,String,Windows,Uppercase,Capitalize,我正在尝试使用python生成一个故事。为此,我尝试从用户那里获取一些问题的输入。我试图了解的情况是,每当用户输入输入时,它就会以大写字母显示在输出屏幕上。 但实际情况是,文本以小写字母显示。 下面是代码的示例 message1 = input(" my name is: ") message2 = input(" i am from: ") message3 = input(" i love to eat: ") print( " My name is " + message1.upper(

我正在尝试使用python生成一个故事。为此,我尝试从用户那里获取一些问题的输入。我试图了解的情况是,每当用户输入输入时,它就会以大写字母显示在输出屏幕上。
但实际情况是,文本以小写字母显示。
下面是代码的示例

message1 = input(" my name is: ")
message2 = input(" i am from: ") 
message3 = input(" i love to eat: ")
print( " My name is " + message1.upper() + " I am from " + message2.upper() + " I love to eat " +  message3.upper())

当用户输入
SANDEEP
时,我希望我的名字是SANDEEP,但是我得到了
SANDEEP

,因此,这只适用于Linux系统,并且只适用于ASCII字符:

import termios
import sys

def uppercase_input(prompt):
    sys.stdout.write(prompt)
    sys.stdout.flush()
    old = termios.tcgetattr(sys.stdout.fileno())
    new = old[:]
    new[1] |= termios.OLCUC
    termios.tcsetattr(sys.stdout.fileno(), termios.TCSANOW, new)
    try:
        return input().upper()
    finally:
        termios.tcsetattr(sys.stdout.fileno(), termios.TCSANOW, old)


result = uppercase_input("all uppercase? ")
print("yes: {}".format(result))
这使用了一些有趣的古老设置来将I/O转换为大写字母或从大写字母转换为大写字母,而以前只有支持大写ASCII的终端

man tcsetattr

OLCUC(不在POSIX中)在输出时将小写字符映射为大写字符

所以这个解决方案不是真正的可移植的


对于完全可移植的解决方案,您需要自己实现回显。

您可以将以下代码用于console应用程序。我在完整阅读输入后转换输入。但是,当您在web应用程序中实现它时(通过使用html和javascript),您可以轻松地完成这项工作,并获得所需的结果(将输入的每个字符转换为大写)


你现在的代码有什么问题吗?先生,问题是这个代码没有达到预期的效果。一切都好。但我想要的是,任何用户输入的内容都应显示为大写字母。@Daniel Roseman那windows系统呢。我使用的是预装Python解释器的VisualStudio。那么如何用它来实现呢?@sandepa而且你必须自己实现回显(=键入内容的重新输出),我不知道这在Windows上是如何工作的,也不知道它是否工作。先生,我已经研究过回显是一个旧的unix/DOS/shell命令,它可以简单地回显你键入的任何文本。像打印命令一样。。那我在这里怎么用呢?不,我不是这个意思。我不知道windows的详细信息。在POSIX上,终端可以选择“回显”输入的每个字符,而无需涉及应用程序。这是在例如
input()
期间用来显示键入内容的内容。它通常与行缓冲结合使用。您需要的是关闭终端上的线路缓冲和回音,自己处理。@Jonas Wielicki好的,先生。谢谢。顺便说一下,我找到了解决办法。无论如何,谢谢你的帮助。非常感谢。它按要求工作。已获得所需结果。@user8994414Welcome Sandeep
import os
message1 = input(" MY NAME IS: ")
os.system('cls') 
message1="MY NAME IS : "+message1.upper()
res=message1+"\n"
message2 = input(res+"I AM FROM: ") 
os.system('cls') 
res+="I AM FROM : "+message2.upper()+"\n"
message2="I AM FROM : "+message2.upper()
message3 = input(res+"I LOVE TO EAT: ")
os.system('cls') 
res+="I LOVE TO EAT : "+message3.upper()+"\n"
message3="I LOVE TO EAT: "+message3.upper()
print(res+"\n\n\n"+ message1 +"\t"+message2+"\t"+message3)