鱼C论坛

 找回密码
 立即注册
查看: 889|回复: 10

[已解决]求修改!

[复制链接]
发表于 2022-2-12 10:48:22 From FishC Mobile | 显示全部楼层 |阅读模式
30鱼币
运行结果哪里出了问题,希望大佬可以解答
"""
时间: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)运行结果:"""

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

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

  16. while True:
  17.     temp = input("请输入一段英文:")
  18.     demo(temp)
  19.     temp2 = input("是否继续,继续请按y")
  20.     if temp2 == "y":
  21.         print("继续你的测试...")
  22.         continue
  23.     else:
  24.         print("停止测试退出循环...")
  25.         break
复制代码

最佳答案

查看完整内容

如果你不想判断的话,有一个比您更好的方案:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-12 10:48:23 | 显示全部楼层    本楼为最佳答案   
python爱好者. 发表于 2022-2-12 11:22
因为在 demo 函数执行后,它返回的是一个结果,所以我们要去判断一下这个结果,再去向用户输出!

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

  16. while True:
  17.     temp = input("请输入一段英文:")
  18.     demo(temp)
  19.     temp2 = input("是否继续,继续请按y")
  20.     if temp2 == "y":
  21.         print("继续你的测试...")
  22.         continue
  23.     else:
  24.         print("停止测试退出循环...")
  25.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-12 11:03:17 | 显示全部楼层
  1. def demo(temp):
  2.    
  3.     upper = 0
  4.     lower = 0
  5.     for i in temp:
  6.         if i.isupper():
  7.             upper += 1
  8.         
  9.         elif i.islower():
  10.             lower += 1
  11.             
  12.         else:
  13.             return "请输入正确形式"
  14.     return upper,lower

  15. while True:
  16.     temp = input("请输入一段英文:")
  17.     a = demo(temp)
  18.     print("大写字母个数:%s"%a[0],"小写字母个数为:%s"%a[1])
  19.     temp2 = input("是否继续,继续请按y")
  20.     if temp2 == "y":
  21.         print("继续你的测试...")
  22.         continue
  23.     else:
  24.         print("停止测试退出循环...")
  25.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-12 11:07:03 | 显示全部楼层
本帖最后由 灰晨 于 2022-2-12 11:09 编辑
  1. def demo(temp):
  2.     upper = 0
  3.     lower = 0
  4.     for i in temp:
  5.         if i.isupper():
  6.             upper += 1
  7.         elif i.islower():
  8.             lower += 1
  9.         else:
  10.             return "请输入正确形式"
  11.     return upper, lower


  12. while True:
  13.     temp = input("请输入一段英文:")
  14.     a, b = demo(temp)
  15.     print("大写字母个数:%s" % a, "小写字母个数为:%s" % b)
  16.     temp2 = input("是否继续,继续请按y")
  17.     if temp2 == "y":
  18.         print("继续你的测试...")
  19.         continue
  20.     else:
  21.         print("停止测试退出循环...")
  22.         break
复制代码


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

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
蜜雪冰城 + 5 + 5 + 3

查看全部评分

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

使用道具 举报

发表于 2022-2-12 11:08:42 | 显示全部楼层

这里不应该将 return 语句放在 for 循环的前两个判断语句中:
  1. if i.isupper():
复制代码

  1. if i.isupper():
复制代码

因为一旦返回了,就会直接退出函数,所以要把它们在最后以元组的形式总的返回出来

所以既然返回结果是个元组,语句:
  1. print("大写字母个数:%s"%a,"小写字母个数为:%s"%a)
复制代码

就应该分别对应索引 0 和 1 ,就是 a[0] ,a[1] ,它们分别代表的是大写的量和小写的量!


懂了吗?不懂可以再问!懂了就给个好评呗!!!

打字不易!请给个好评!!!
兄弟!给个好评!求求了!!!

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
蜜雪冰城 + 5 + 5 + 3

查看全部评分

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

使用道具 举报

 楼主| 发表于 2022-2-12 11:18:34 From FishC Mobile | 显示全部楼层
python爱好者. 发表于 2022-2-12 11:08
这里不应该将 return 语句放在 for 循环的前两个判断语句中:



大佬,还有一个问题,我现在输入数字,他不提醒我输入正确形式了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-12 11:21:31 | 显示全部楼层
蜜雪冰城 发表于 2022-2-12 11:18
大佬,还有一个问题,我现在输入数字,他不提醒我输入正确形式了
  1. def demo(temp):
  2.    
  3.     upper = 0
  4.     lower = 0
  5.     for i in temp:
  6.         if i.isupper():
  7.             upper += 1
  8.         
  9.         elif i.islower():
  10.             lower += 1
  11.             
  12.         else:
  13.             return "请输入正确形式"
  14.     return upper,lower

  15. while True:
  16.     temp = input("请输入一段英文:")
  17.     a = demo(temp)
  18.     if demo(temp) != "请输入正确形式":
  19.         print("大写字母个数:%s"%a[0],"小写字母个数为:%s"%a[1])
  20.     else:
  21.         print("请输入正确形式")
  22.     temp2 = input("是否继续,继续请按y")
  23.     if temp2 == "y":
  24.         print("继续你的测试...")
  25.         continue
  26.     else:
  27.         print("停止测试退出循环...")
  28.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-12 11:22:49 | 显示全部楼层

因为在 demo 函数执行后,它返回的是一个结果,所以我们要去判断一下这个结果,再去向用户输出!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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
修改如下:
  1. def demo(temp):
  2.    
  3.     upper = 0
  4.     lower = 0
  5.     for i in temp:
  6.         if i.isupper():
  7.             upper += 1
  8.             
  9.         elif i.islower():
  10.             lower += 1
  11.             
  12.     else:
  13.         return [upper,lower]
  14.             

  15. while True:
  16.     temp = input("请输入一段英文:")
  17.     a = demo(temp)
  18.     print("大写字母个数:%d,小写字母个数为:%d"%(a[0],a[1]))
  19.     temp2 = input("是否继续,继续请按y")
  20.     if temp2 == "y":
  21.         print("继续你的测试...")
  22.         continue
  23.     else:
  24.         print("停止测试退出循环...")
  25.         break
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
蜜雪冰城 + 1 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2022-2-12 11:32:53 | 显示全部楼层
不弃_ 发表于 2022-2-12 11:31
def demo(temp):
   
    upper = 0

不是一样的吗......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-2-12 11:37:11 From FishC Mobile | 显示全部楼层
python爱好者. 发表于 2022-2-12 11:21

谢大佬,说的很明白,很细致
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 20:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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