从零开始将字符串转换为上限

2024-09-29 19:28:58 发布

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

我试图写一个函数,把一个字符串转换成它的大写版本。它主要工作,除非它接近字母表的末尾或输入字符串的末尾。在

有什么想法?建议?建议?在

def upper(string):

    length = len(string)
    index_string = 0
    index_ucase = 0
    index_lcase = 0
    uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    lowercase = 'abcdefghijklmnopqrstuvwxyz'

    while index_string < len(string):
        index_lcase = 0
        while index_lcase < len(lowercase):
            if string[index_string] == lowercase[index_lcase]:
               string = string[:index_string] + uppercase[index_lcase] + string[index_string+1:]
               break
            else:
                index_lcase += 1
        index_string += 1

Tags: 函数字符串版本stringindexlendef建议
3条回答

或者另一种方式。在

test = "This is a sentence."
print "".join([char if char not in lowercase else uppercase[lowercase.index(char)] for char in test])
# THIS IS A SENTENCE.

只是澄清一下,这是等价的

^{pr2}$

Thoughts? Suggestions? Advice?

别这样。在

真的。在

别这样

除非你在玩。别,别这样。在

为什么?在

语言很难。

{cd2>是大写的吗?在

您可以始终使用大写字母->小写字母->大写字母,并且输出与输入相同。正确的?在

没有。不。不,不。在

因此,首先,您的方法只包括ASCII字母。你知道吗?德语有ää是直截了当的。大写äÄ,小写Ä是{}(如果你想知道:它听起来像英语中的asad)。在

另外,德语有ß。^{cd9>字母是小写。听起来很尖锐。瑞士虽然部分讲德语,但没有ß;他们只是使用ss。所以,在德语中,ß只出现在单词的中间或结尾。这意味着它不需要大写版本;而且,由于德国的效率,它根本就没有大写版本。在

你想在糖果店的入口处写下糖果店?正常情况下,它是sü223; warengeschäft(甜品商店)。如果你把它音译成所有的大写字母,它是正确的,并且规范化为sÜSSWARENGESCHÄFT。注意小写ß被大写SS替换。砰。没有退路。你的单词只多了一个字母,除非你懂德语拼字法(并且确定店主不是瑞士人),否则你不可能知道如果你想把东西翻译回小写,你需要用ß而不是ss。在

也就是说,除非你用了能给你更多信息的东西。在

Unicode可以提供更多信息。希腊的Ω可能就是——一个长的“O”音,或者它可能是电阻的单位,欧姆:Ω。不同的含义(尽管看起来可能是一样的),对于Unicode来说,它们有着不同的代码点。如果您使用Unicode格式的大Ω,并在其上使用pythonlower(),那么它应该正确地给出。如果你使用u"The resistance of this resistor is 5Ω"并在上面使用lower,那么就不会太多了:u"the resistance of this resistor is 5Ω"。在

因此:不要使用简单的字母逐字翻译。它从未奏效,也永远不会成功。在

我建议你说:

letters = {'a': 'A'... 'z': 'Z'}

然后:

^{pr2}$

我认为这些应该能解决你的问题。你的代码到底在哪里失败?在

相关问题 更多 >

    热门问题