python - 如何不通过大写其他代码来替换代码?

标签 python for-loop if-statement str-replace capitalize

sentence = str ( input ( "Enter a sentence:" ) )
sentence = sentence.split ( )

new = ""
for word in sentence:
    wordi = ord ( word[ 0 ] )
    cap = word[ 0 ]
    a = chr ( (ord ( cap ) - 32) )
    word1 = word.replace ( word[ 0 ] ,a )

    if wordi <= 122 and wordi >= 97:
        new = new + word1 + " "
    else:
        new = new + word + " "

print ( new )

我一直在写一个代码,它可以在不使用 capitalize 或 upper 函数的情况下将句子中的所有第一个字母大写。当单词中的字母与我要大写的字母不同时,我编写的代码似乎没问题。

输入:

Hello world

输出:

Hello World

但是,如果单词中的字母也与我要大写的字母相同,那么单词中的字母也会变成大写。

输入:

helloh worldw

输出:

HelloH WorldW

我尝试在替换中切换“a”变量,并在 if-else 语句的变量 new 中也添加 a 到 new。

sentence = str ( input ( "Enter a sentence:" ) )
sentence = sentence.split ( )

new = ""
for word in sentence:
    wordi = ord ( word[ 0 ] )
    cap = word[ 0 ]
    a = chr ( (ord ( cap ) - 32) )
    word1 = word.replace ( word[ 0 ] ,"" )

    if wordi <= 122 and wordi >= 97:
        new = new + a + word1 + " "
    else:
        new = new + word + " "

print ( new )

但是,代码原来是单词中重复的字母在打印时会被删除。

输入:

helloh 

输出:

Hello

我怎样才能使代码工作?

最佳答案

def capitalize(lower_case_word):
    return ' '.join(x[:1].upper() + x[1:] for x in lower_case_word.split())

print(capitalize('hello I am nobody'))

对于第一个字符全部大写,这是效率最高的(按行)。

def capitalize(lower_case_word):
    lower_case_word = lower_case_word.split()
    new_phrase = ""

    for character in lower_case_word:
        new_phrase += character[0].upper() + character[1:] + ' '

    return new_phrase

print(capitalize('hello I am nobody'))

这个也可以,但是要多写几行代码才能完成。如果你是初学者,我个人推荐第二种方法,因为我也是初学者,这样更容易理解。

关于python - 如何不通过大写其他代码来替换代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67490322/

相关文章:

Python - 发送数据包发出错误 - Minecraft Packets

c++ - 读取三重嵌套 for 循环

java - 增强的 for 循环和 float 组

javascript - 为什么我的函数总是返回相同的值?

java - 文件扩展名 - 用于文件。 (.Mp3 和 .Wav)

python - 通过 Python 使用 ADO 将数据插入 MS Access 数据库时出现问题

python:创建一个不规则的迭代器

python - 如何将特定值从一个数据帧填充到另一个数据帧

perl - 在Perl中,while循环通常比for循环快吗?

ios - 检查属性值时,“Int”无法转换为 'Range<Int>'