无恙JJ 发表于 2023-3-18 18:23:57

编写函数实现求字符串中大、小写字母的个数;

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

怎么在这个错误代码下修改以达到编写“函数实现求字符串中大、小写字母的个数;”的目的
且错在哪??
鱼油帮帮,

歌者文明清理员 发表于 2023-3-18 18:28:50

因为 x.split()是以空白字符分割。
改成 a=list(x)即可

isdkz 发表于 2023-3-18 18:29:37

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

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

以下是修改后的代码:

def main(x):
    m1 = 0
    m2 = 0
    for i in x:
      if 65 <= ord(i) <= 90:# 大写字母的范围
            m1 += 1
      elif 97 <= ord(i) <= 122:# 小写字母的范围
            m2 += 1
    print("大写:", m1, "小写:", m2)

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

未泯 发表于 2023-3-20 00:42:32

本帖最后由 未泯 于 2023-3-20 13:47 编辑

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

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

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

superdg007 发表于 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)
页: [1]
查看完整版本: 编写函数实现求字符串中大、小写字母的个数;