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

2024-09-25 02:39:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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时,我期望My name is SANDEEP,但我得到sandeep。你知道吗


Tags: to用户namefrominputismy情况
2条回答

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

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)

因此,这只适用于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 (not in POSIX) Map lowercase characters to uppercase on output.

所以这个解决方案并不是真正可移植的。你知道吗

对于一个完全可移植的解决方案,您需要自己实现回声。你知道吗

相关问题 更多 >