鱼C论坛

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

[已解决]如果输出判断类型

[复制链接]
发表于 2021-9-13 11:14:15 | 显示全部楼层 |阅读模式

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

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

x
def count(*zifuchuan):
    new = ''.join(zifuchuan)
    length = len(new)
    print(new)
    for i in range(length):
        alpha = 0
        space = 0
        digit = 0
        others = 0
        for each in new[i]:
            if each.isalpha():
                alpha +=1
            elif each.isdigit():
                digit +=1
            elif each == ' ':
                space +=1
            else:
                others +=1
            
    print(alpha,digit,space,others)
我是想把输入的多参数合并为一个字符串,然后看看 数字 空格 字母是否在字符串中,到for i in range(length):这一步好像没啥问题,之后不知道哪里错了,比如我输入count('6576455','asd aeedf sdfs')
他只返回1 0 0 0
求大佬指正
最佳答案
2021-9-13 16:53:01
def count(*zifuchuan):
    new = ''.join(zifuchuan)
    length = len(new)
    print(new)
    for i in range(length):
        alpha = 0
        space = 0
        digit = 0
        others = 0
#  这里的问题  for循环每执行一次你这里的值都要重新赋值一次
        for each in new[i]:
            if each.isalpha():
                alpha +=1
            elif each.isdigit():
                digit +=1
            elif each == ' ':
                space +=1
            else:
                others +=1
            
    print(alpha,digit,space,others)#所以你这输出的是最后一次的统计结果

修改
def count(*zifuchuan):
    new = ''.join(zifuchuan)
    length = len(new)
    print(new)
    alpha = 0
    space = 0
    digit = 0
    others = 0
#放在这的话 下面的值才会把结果相加
    for i in range(length):
      
        for each in new[i]:
            if each.isalpha():
                alpha +=1
            elif each.isdigit():
                digit +=1
            elif each == ' ':
                space +=1
            else:
                others +=1
     print(alpha,digit,space,others)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-13 11:38:16 | 显示全部楼层
你期望返回啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 11:42:06 | 显示全部楼层
def count(*zifuchuan):
    new = ''.join(zifuchuan)
    length = len(new)
    print(new)
    alpha = 0
    space = 0
    digit = 0
    others = 0
    for i in range(length):
            if new[i].isalpha():
                alpha +=1
            elif new[i].isdigit():
                digit +=1
            elif new[i] == ' ':
                space +=1
            else:
                others +=1
            
    print(alpha,digit,space,others)
count('6576455','asd aeedf sdfs') 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 13:21:44 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-9-13 17:06 编辑
你的 alpha = 0,space = 0,digit = 0,others = 0 必須放在 for 循環外面,不然每次更新結果後又恢復 0

我的代碼:(供參考)
def strInfo(*strs: str) -> dict():
    res = {}.fromkeys(['alpha', 'space', 'digit', 'others'], 0) # 創建字典,增加輸出可讀性
    for char in ''.join(strs): # 直接遍歷,無需再創建新列表
        if char.isalpha(): res['alpha'] += 1
        elif char.isdigit(): res['digit'] += 1
        elif char == ' ': res['space'] += 1
        else: res['others'] += 1
    return res.items() # 返回字典裡的元素


print(*strInfo('6576455','asd aeedf sdfs')) # 打印
('alpha', 12) ('space', 2) ('digit', 7) ('others', 0)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 16:53:01 | 显示全部楼层    本楼为最佳答案   
def count(*zifuchuan):
    new = ''.join(zifuchuan)
    length = len(new)
    print(new)
    for i in range(length):
        alpha = 0
        space = 0
        digit = 0
        others = 0
#  这里的问题  for循环每执行一次你这里的值都要重新赋值一次
        for each in new[i]:
            if each.isalpha():
                alpha +=1
            elif each.isdigit():
                digit +=1
            elif each == ' ':
                space +=1
            else:
                others +=1
            
    print(alpha,digit,space,others)#所以你这输出的是最后一次的统计结果

修改
def count(*zifuchuan):
    new = ''.join(zifuchuan)
    length = len(new)
    print(new)
    alpha = 0
    space = 0
    digit = 0
    others = 0
#放在这的话 下面的值才会把结果相加
    for i in range(length):
      
        for each in new[i]:
            if each.isalpha():
                alpha +=1
            elif each.isdigit():
                digit +=1
            elif each == ' ':
                space +=1
            else:
                others +=1
     print(alpha,digit,space,others)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 21:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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