鱼C论坛

 找回密码
 立即注册
查看: 1367|回复: 3

[已解决]大佬们,课后作业QAQ

[复制链接]
发表于 2020-7-8 11:05:25 | 显示全部楼层 |阅读模式

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

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

x
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
number = '0123456789'
space = ' '
def count(one,two):
    oywzm = 0
    osz = 0
    okg = 0
    oqtzf = 0
    for each_one in one:
        if each_one in alphabet:
            oywzm += 1
        elif each_one in number:
            osz += 1
        elif each_one in space:
            okg += 1
        else:
            oqtzf += 1
    print('第1个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % oywzm, osz, okg, oqtzf)
    tywzm = 0
    tsz = 0
    tkg = 0
    tqtzf = 0
    for each_two in two:
        if each_two in alphabet:
            tywzm += 1
        elif each_two in number:
            tsz += 1
        elif each_two in space:
            tkg += 1
        else:
            tqtzf += 1
    print('第1个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % tywzm, tsz, tkg, tqtzf)

count('I love fishc.com.','I love you, you love me.')
----------------------------------------------------------------------------------------------------------------------------------------------
两个问题:
1.为什么会报错 QQ图片20200708110339.png
2.两个for循环重复了,有没有办法不重复QAQ
最佳答案
2020-7-8 11:09:33


报错是因为你 % 号格式化时候忘记加括号了

我帮你合并了你看代码吧:
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
number = '0123456789'
space = ' '
def count(one,two):
    oywzm = 0
    osz = 0
    okg = 0
    oqtzf = 0
    for i in range(2):
        for each_one in [one,two][i]:
            if each_one in alphabet:
                oywzm += 1
            elif each_one in number:
                osz += 1
            elif each_one in space:
                okg += 1
            else:
                oqtzf += 1
        print('第%d个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i+1,oywzm, osz, okg, oqtzf))

count('I love fishc.com.','I love you, you love me.')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-8 11:09:33 | 显示全部楼层    本楼为最佳答案   


报错是因为你 % 号格式化时候忘记加括号了

我帮你合并了你看代码吧:
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
number = '0123456789'
space = ' '
def count(one,two):
    oywzm = 0
    osz = 0
    okg = 0
    oqtzf = 0
    for i in range(2):
        for each_one in [one,two][i]:
            if each_one in alphabet:
                oywzm += 1
            elif each_one in number:
                osz += 1
            elif each_one in space:
                okg += 1
            else:
                oqtzf += 1
        print('第%d个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i+1,oywzm, osz, okg, oqtzf))

count('I love fishc.com.','I love you, you love me.')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 11:11:06 | 显示全部楼层
本帖最后由 yhhpf 于 2020-7-8 11:16 编辑
print('第1个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (oywzm, osz, okg, oqtzf))

print('第1个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (tywzm, tsz, tkg, tqtzf))

当有多个格式化内容时,需要用()刮号刮起来;

循环还是循环两次,不过简化点:
alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
number = '0123456789'
space = ' '
def count(one,two):
    list1 = [one,two]
    oywzm = 0
    osz = 0
    okg = 0
    oqtzf = 0
    for each_one in list1:
        for each in each_one:
            if each in alphabet:
                oywzm += 1
            elif each in number:
                osz += 1
            elif each in space:
                okg += 1
            else:
                oqtzf += 1

        print('第1个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (oywzm, osz, okg, oqtzf))

count('I love fishc.com.','I love you, you love me.')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 15:22:43 | 显示全部楼层
问题1:应该这样:print('第1个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (oywzm, osz, okg, oqtzf))
问题2:可以封装成函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 01:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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