【问题标题】:How to take any input from the users in capital letters even if the user is entering it in small letters?即使用户以小写字母输入,如何以大写字母从用户那里获取任何输入?
【发布时间】:2018-05-04 13:37:01
【问题描述】:

我正在尝试使用 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

【问题讨论】:

  • 你当前的代码有什么问题?
  • 先生,问题是我没有得到想要的结果。一切都好 。但我想要的是任何用户输入的输入都应该显示为大写字母。 @丹尼尔罗斯曼

标签: python string windows uppercase capitalize


【解决方案1】:

因此,这仅适用于 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 中)在输出时将小写字符映射为大写。

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

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

【讨论】:

  • 那么windows系统呢。好吧,我正在使用预装了 Python 解释器的 Visual Studio。那么如何实现呢?
  • @SandeepAnand 您必须自己实现回显(= 重新输出输入的内容),我不知道这在 Windows 上如何以及是否有效。
  • 先生,我研究过 Echo echo 是一个旧的 unix/DOS/shell 命令,它只是简单地键入你输入的任何文本。就像一个打印命令......那么我怎么能在这里使用它呢?
  • 不,我不是这个意思。我不知道windows上的细节。在 POSIX 上,终端可以选择“回显”每个键入的 字符,而无需涉及应用程序。这是在例如期间使用的。 input() 显示输入的内容。它通常与行缓冲结合使用。您需要的是关闭终端上的线路缓冲和回显并自己处理。
  • @Jonas Wielicki 好的,先生。非常感谢。顺便说一句,我得到了解决方案。无论如何感谢您的帮助。
【解决方案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)

【讨论】:

  • 非常感谢。它按要求工作。得到了想要的结果。@user8994414
  • 欢迎桑迪普
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-13
  • 1970-01-01
相关资源
最近更新 更多