蜜雪冰城 发表于 2022-2-12 10:48:22

求修改!

运行结果哪里出了问题,希望大佬可以解答
"""
时间:2022年2月4日21:36:04
目的:输入一段英文,计算其中大写字母和小写字母的数量"""

#isupper():判断字符串是否为大写字符
#islower():判断字符串是否为小写字符

def demo(temp):
   
    upper = 0
    lower = 0
    for i in temp:
      if i.isupper():
            upper += 1
            return upper
      elif i.islower():
            lower += 1
            return lower
      else:
            return "请输入正确形式"

while True:
    temp = input("请输入一段英文:")
    a = demo(temp)
    print("大写字母个数:%s"%a,"小写字母个数为:%s"%a)
    temp2 = input("是否继续,继续请按y")
    if temp2 == "y":
      print("继续你的测试...")
      continue
    else:
      print("停止测试退出循环...")
      break


"""
l.IDLE (Python 3.8 32-bit)运行结果:"""

   

python爱好者. 发表于 2022-2-12 10:48:23

python爱好者. 发表于 2022-2-12 11:22
因为在 demo 函数执行后,它返回的是一个结果,所以我们要去判断一下这个结果,再去向用户输出!

如果你不想判断的话,有一个比您更好的方案:
def demo(temp):
   
    upper = 0
    lower = 0
    for i in temp:
      if i.isupper():
            upper += 1
      
      elif i.islower():
            lower += 1
            
      else:
            print("请输入正确格式")
            return -1
    print("大写字母个数:%s" % upper,"小写字母个数为:%s" % lower)

while True:
    temp = input("请输入一段英文:")
    demo(temp)
    temp2 = input("是否继续,继续请按y")
    if temp2 == "y":
      print("继续你的测试...")
      continue
    else:
      print("停止测试退出循环...")
      break

python爱好者. 发表于 2022-2-12 11:03:17

def demo(temp):
   
    upper = 0
    lower = 0
    for i in temp:
      if i.isupper():
            upper += 1
      
      elif i.islower():
            lower += 1
            
      else:
            return "请输入正确形式"
    return upper,lower

while True:
    temp = input("请输入一段英文:")
    a = demo(temp)
    print("大写字母个数:%s"%a,"小写字母个数为:%s"%a)
    temp2 = input("是否继续,继续请按y")
    if temp2 == "y":
      print("继续你的测试...")
      continue
    else:
      print("停止测试退出循环...")
      break

灰晨 发表于 2022-2-12 11:07:03

本帖最后由 灰晨 于 2022-2-12 11:09 编辑

def demo(temp):
    upper = 0
    lower = 0
    for i in temp:
      if i.isupper():
            upper += 1
      elif i.islower():
            lower += 1
      else:
            return "请输入正确形式"
    return upper, lower


while True:
    temp = input("请输入一段英文:")
    a, b = demo(temp)
    print("大写字母个数:%s" % a, "小写字母个数为:%s" % b)
    temp2 = input("是否继续,继续请按y")
    if temp2 == "y":
      print("继续你的测试...")
      continue
    else:
      print("停止测试退出循环...")
      break

两个问题,1. return得放循环外。2. 注意返回的是两个值。

python爱好者. 发表于 2022-2-12 11:08:42

python爱好者. 发表于 2022-2-12 11:03


这里不应该将 return 语句放在 for 循环的前两个判断语句中:
if i.isupper():
if i.isupper():
因为一旦返回了,就会直接退出函数,所以要把它们在最后以元组的形式总的返回出来

所以既然返回结果是个元组,语句:
print("大写字母个数:%s"%a,"小写字母个数为:%s"%a)
就应该分别对应索引 0 和 1 ,就是 a ,a ,它们分别代表的是大写的量和小写的量!


懂了吗?不懂可以再问!懂了就给个好评呗!!!
{:10_257:}{:10_297:}{:10_281:}{:10_298:}
打字不易!请给个好评!!!
兄弟!给个好评!求求了!!!
{:10_254:}{:10_254:}{:10_254:}{:10_254:}

蜜雪冰城 发表于 2022-2-12 11:18:34

python爱好者. 发表于 2022-2-12 11:08
这里不应该将 return 语句放在 for 循环的前两个判断语句中:




大佬,还有一个问题,我现在输入数字,他不提醒我输入正确形式了

python爱好者. 发表于 2022-2-12 11:21:31

蜜雪冰城 发表于 2022-2-12 11:18
大佬,还有一个问题,我现在输入数字,他不提醒我输入正确形式了

def demo(temp):
   
    upper = 0
    lower = 0
    for i in temp:
      if i.isupper():
            upper += 1
      
      elif i.islower():
            lower += 1
            
      else:
            return "请输入正确形式"
    return upper,lower

while True:
    temp = input("请输入一段英文:")
    a = demo(temp)
    if demo(temp) != "请输入正确形式":
      print("大写字母个数:%s"%a,"小写字母个数为:%s"%a)
    else:
      print("请输入正确形式")
    temp2 = input("是否继续,继续请按y")
    if temp2 == "y":
      print("继续你的测试...")
      continue
    else:
      print("停止测试退出循环...")
      break

python爱好者. 发表于 2022-2-12 11:22:49

python爱好者. 发表于 2022-2-12 11:21


因为在 demo 函数执行后,它返回的是一个结果,所以我们要去判断一下这个结果,再去向用户输出!

不弃_ 发表于 2022-2-12 11:31:20

def demo(temp):
   
    upper = 0
    lower = 0
    for i in temp:
      if i.isupper():
            upper += 1
            return upper                                 #这里不能return 否则将退出函数不能进行判断
      elif i.islower():
            lower += 1
            return lower                                 #同上 return将退出函数
      else:
            return "请输入正确形式"

while True:
    temp = input("请输入一段英文:")
    a = demo(temp)
    print("大写字母个数:%s"%a,"小写字母个数为:%s"%a) #这里应该打印数字 用%d
    temp2 = input("是否继续,继续请按y")
    if temp2 == "y":
      print("继续你的测试...")
      continue
    else:
      print("停止测试退出循环...")
      break
修改如下:
def demo(temp):
   
    upper = 0
    lower = 0
    for i in temp:
      if i.isupper():
            upper += 1
            
      elif i.islower():
            lower += 1
            
    else:
      return
            

while True:
    temp = input("请输入一段英文:")
    a = demo(temp)
    print("大写字母个数:%d,小写字母个数为:%d"%(a,a))
    temp2 = input("是否继续,继续请按y")
    if temp2 == "y":
      print("继续你的测试...")
      continue
    else:
      print("停止测试退出循环...")
      break

python爱好者. 发表于 2022-2-12 11:32:53

不弃_ 发表于 2022-2-12 11:31
def demo(temp):
   
    upper = 0


不是一样的吗......

蜜雪冰城 发表于 2022-2-12 11:37:11

python爱好者. 发表于 2022-2-12 11:21


谢大佬,说的很明白,很细致
页: [1]
查看完整版本: 求修改!