我试图写一个函数,把一个字符串转换成它的大写版本。它主要工作,除非它接近字母表的末尾或输入字符串的末尾。在
有什么想法?建议?建议?在
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
或者另一种方式。在
只是澄清一下,这是等价的
^{pr2}$别这样。在
真的。在
别这样
除非你在玩。别,别这样。在
为什么?在
语言很难。
{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Ω"
。在因此:不要使用简单的字母逐字翻译。它从未奏效,也永远不会成功。在
我建议你说:
然后:
^{pr2}$我认为这些应该能解决你的问题。你的代码到底在哪里失败?在
相关问题 更多 >
编程相关推荐