鱼C论坛

 找回密码
 立即注册
查看: 1615|回复: 4

[已解决]编写函数实现求字符串中大、小写字母的个数;

[复制链接]
发表于 2023-3-18 18:23:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def main(x):
    a=x.split()
    m1=0
    m2=0
    for i in range(0,len(a)):
        if 64<ord(a[i])<91:
            m1+=1
        else:
            m2+=1
    print("大写:",m1,"小写:",m2)
x=input("请输入一串字符,由我来判断他们的大小写个数:")
main(x)

怎么在这个错误代码下修改以达到编写  “函数实现求字符串中大、小写字母的个数;”的目的
且错在哪??
鱼油帮帮,
最佳答案
2023-3-18 18:29:37
在 main 函数中,你应该遍历字符串的每个字符,而不是使用 split() 方法。.split()是以空白字符分割字符串

还有就是你需要在判断条件中添加小写字母的条件,而不是直接用 else。除非你能保证你输入的字符串只有字母

以下是修改后的代码:

  1. def main(x):
  2.     m1 = 0
  3.     m2 = 0
  4.     for i in x:
  5.         if 65 <= ord(i) <= 90:  # 大写字母的范围
  6.             m1 += 1
  7.         elif 97 <= ord(i) <= 122:  # 小写字母的范围
  8.             m2 += 1
  9.     print("大写:", m1, "小写:", m2)

  10. x = input("请输入一串字符,由我来判断他们的大小写个数:")
  11. main(x)
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-18 18:28:50 | 显示全部楼层

回帖奖励 +3 鱼币

因为 x.split()是以空白字符分割。
改成 a=list(x)即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-18 18:29:37 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +3 鱼币

在 main 函数中,你应该遍历字符串的每个字符,而不是使用 split() 方法。.split()是以空白字符分割字符串

还有就是你需要在判断条件中添加小写字母的条件,而不是直接用 else。除非你能保证你输入的字符串只有字母

以下是修改后的代码:

  1. def main(x):
  2.     m1 = 0
  3.     m2 = 0
  4.     for i in x:
  5.         if 65 <= ord(i) <= 90:  # 大写字母的范围
  6.             m1 += 1
  7.         elif 97 <= ord(i) <= 122:  # 小写字母的范围
  8.             m2 += 1
  9.     print("大写:", m1, "小写:", m2)

  10. x = input("请输入一串字符,由我来判断他们的大小写个数:")
  11. main(x)
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-20 00:42:32 | 显示全部楼层
本帖最后由 未泯 于 2023-3-20 13:47 编辑

split()会返回一个列表,比如你输入“I Love FishC”,得到的是['I','Love','FishC'],所以你迭代的是列表,而不是你输入的字符串中每个字符。

实例:
  1. def main(x):
  2.     a=''.join(x.split())       //可以这样把列表重新组合成字符串,但是其实这一段的都可以省掉,直接用你输入的字符串去判断
  3.     m1=len([i for i in a if i.isupper()])
  4.     m2=len([i for i in a if i.islower()])
  5.     print("大写:",m1,"小写:",m2)

  6. x=input("请输入一串字符,由我来判断他们的大小写个数:")
  7. main(x)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-3-20 14:55:25 | 显示全部楼层
可以活用python里islower,isupper,isalpha等函数:
def func(x):
    count = 0
    for i in x:
        if i.isupper():
            count = count + 1
    print(f'大写字符:{count},小写字符:{len(x) - count}')


x = '1'  # 初始化x,让循环进行下去
while x.isalpha() is False:  # 判断是否全是字母
    x = input('请输入一串字符:')
    x = ''.join(x.split())  # 把多余的空格去掉
    print('非全字母,请重新输入')
   
func(x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 15:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表