| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 464 人关注过本帖
标题:python字符串大小写和函数参数的问题
只看楼主 加入收藏
kyletan0808
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2019-4-11
结帖率:50%
  已结贴   问题点数:20  回复次数:13   
python字符串大小写和函数参数的问题
大家好,我是新手请多多关照。
求教一个问题:我想用函数 get_string()来接收用户输入的字符串然后作为参数传送给函数capitalize_it(x),再通过capitalize_it(x)将字符串中某些字母大写,如".", "?", "!"后面单词的首字母和单独的i大写(不是每个单词首字母都大写)效果如下:
输入
Hi everyone!my name is xxx.please to meet you all.i'm a novice and i appreciate any help.thank you.
输出
Hi everyone!My name is xxx.Please to meet you all.I'm a novice and I appreciate any help.Thank you.
下面是部分代码:

#接收用户输入(为使代码尽量简单故未过滤输入)
def get_string()
    string = input("Please enter a string:")  
    return string
#将字符串符合条件的字母变成大写
def capitalize_it(x)
    for i in range(0,len(x)):
        if x[i] == " " or x[i] == "." or x[i] == "?" or x[i] == "!"
           x[i+1].upper()
    print(x)

#call capitalize_it(x)
capitalize_it(get_string())

#我试过多种方法但都没有用。求指点,拜谢

2019-04-11 14:36
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:版主
威 望:388
帖 子:13246
专家分:51084
注 册:2012-10-18
  得分:0 
upper 是针对整个字符串的
另:你的for if 基本语法都没写对呢

DO IT YOURSELF !
2019-04-11 15:27
TysonKoothra
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:26
专家分:157
注 册:2018-10-21
  得分:12 
程序代码:
#接收用户输入(为使代码尽量简单故未过滤输入)
def get_string():
    string = input("Please enter a string:")  
    return string
#将字符串符合条件的字母变成大写
def capitalize_it(x):
    x_l = list(x)
    for i in range(0,len(x_l)-1):
        if x_l[i] == "." or x_l[i] == "?" or x_l[i] == "!":
           x_l[i+1] = x_l[i+1].upper()
    print("".join(x_l))

#call capitalize_it(x)
capitalize_it(get_string())


[此贴子已经被作者于2019-4-11 16:08编辑过]

2019-04-11 15:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:版主
威 望:388
帖 子:13246
专家分:51084
注 册:2012-10-18
  得分:0 
回复 3楼 TysonKoothra
嗯,又测试了一下。
x[i+1].upper() 可以实现单个字符的转换

DO IT YOURSELF !
2019-04-11 16:07
TysonKoothra
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:26
专家分:157
注 册:2018-10-21
  得分:0 
回复 4楼 wp231957
刚才修改了下程序,重新贴了一下代码
2019-04-11 16:08
TysonKoothra
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:26
专家分:157
注 册:2018-10-21
  得分:0 
回复 5楼 TysonKoothra
还有python里面单引号包括的也是字符串,即使只有一个字符
2019-04-11 16:09
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:版主
威 望:388
帖 子:13246
专家分:51084
注 册:2012-10-18
  得分:8 
>>> s="test"
>>> s[2]=s[2].upper()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> s[2].upper()
'S'
>>>
测试了一下:
s[2]=s[2].upper()  这是非法的

DO IT YOURSELF !
2019-04-11 16:18
TysonKoothra
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:26
专家分:157
注 册:2018-10-21
  得分:0 
回复 7楼 wp231957
确实是, 第一次我写错了. 然后我发现传进来的是一个字符串, 我就把程序改了.
2019-04-11 16:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:版主
威 望:388
帖 子:13246
专家分:51084
注 册:2012-10-18
  得分:0 
这是我copy别人的一段代码   楼主可以参考一下  和三楼TysonKoothra大侠的代码 大同小异

程序代码:
# coding: utf-8

#此函数的功能就是把神马 空格 点 问号 叹号 之后的字符转换成大写
#函数传入参数:一段asscii字符串
def fconv(x):
    result=''
    flag=False
    for c in x:
        if c in " .?!":
          result+=c
          flag = True
        elif flag==True:
              result += c.upper()
              flag = False
        else:
            result += c
    return result     


if __name__=='__main__':
  s="Hi everyone!my name is xxx.please to meet you all.i\'m a novice and i appreciate any help.thank you."
  print(fconv(s))

DO IT YOURSELF !
2019-04-11 16:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:版主
威 望:388
帖 子:13246
专家分:51084
注 册:2012-10-18
  得分:0 
当然了,用正则也能完成 ,并且代码量 要比这些个少一些

DO IT YOURSELF !
2019-04-11 21:21







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040811 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved