鱼C论坛

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

[已解决]第19讲最后一题动动手求助

[复制链接]
发表于 2021-6-1 14:04:37 | 显示全部楼层 |阅读模式

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

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

x
题目: 编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。
代码:
English letters ='QWERTYUIOPASDFGHJKLZXCVBNM'
numbers = '1234567890'
blank space= ' '
others = `';.,/[]{}:""?><~!@#$%^&*()
temp = input('请输入一段话')
L1=list(temp)
for each in L1:
    letter_count=0
    numbers_count=0
    blank_count=0
    others_count=0
    if English letters in L1:
        letter_count+=1
    elif numbers in L1:
        numbers_count+=1
    elif blank space in L1:
        blank_count+=1
    else others in L1:
        others_count+=1
print('英文字母%d个,数字%d个,空格%个,其他字符%d个。%(letter_count,numbers_count,blank_count,others_count))
   

这是我编写的代码。运行出错,一直在第一行,错误提示'invalid syntax'
不知道咋改,求大神指教!谢谢啦~
最佳答案
2021-6-1 15:36:37
本帖最后由 灰晨 于 2021-6-1 15:49 编辑
张静aa 发表于 2021-6-1 15:00
我写的代码还有改进的余地吗?


emmmm,你这代码错得有那么亿点点多。。
1.English letters和blank space命名就不规范,变量名除下划线不能有其他字符的(比如空格)
2.others后面也没加引号表示字符串,而且里面一堆符号还得考虑转义字符。。。
3.L1=list(temp)是把你输入的话一个字符当一个元素的,比如我输入love,L1就是['l','o','v'','e'],你后面English_letters in L1肯定是没有的啊,而且python是分大小写。。。
4.for each in L1你这个each就没见你用。。按你的思路你下面判断应该得if each in English_letters,你既然把你输入的话拆成一个一个元素,就应该判断这个元素在不在English_letters里,而不是判断English_letters在不在你这单个元素里
5.letter_count=0
numbers_count=0
blank_count=0
others_count=0
不能放循环里,不然每次循环都清0了。
6.print也少了个引号和%d的d
我帮你改了改
English_letters ='QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
numbers = '1234567890'
blank_space= ' '
others = '''`';.,/[]{}:""?><~!@#$%^&*()'''
temp = input('请输入一段话')
L1=list(temp)
letter_count=0
numbers_count=0
blank_count=0
others_count=0
for each in L1:
    if each in English_letters:
        letter_count += 1
    elif each in numbers:
        numbers_count += 1
    elif each in blank_space:
        blank_count += 1
    else:
        others_count += 1
print('英文字母%d个,数字%d个,空格%d个,其他字符%d个。'%(letter_count,numbers_count,blank_count,others_count))
而且你这代码只能传一段话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-1 14:39:58 | 显示全部楼层
def count(*param):
    length = len(param)
    for i in range(length):
        letters = 0
        space = 0
        digit = 0
        others = 0
        for each in param[i]:
            if each.isalpha():
                letters += 1
            elif each.isdigit():
                digit += 1
            elif each == ' ':
                space += 1
            else:
                others += 1
        print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i + 1, letters, digit, space, others))


count("I don't love you.", 'I love you, you love me.')
这里传入了2个参数,"I don't love you."和'I love you, you love me.'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-1 15:00:36 | 显示全部楼层
灰晨 发表于 2021-6-1 14:39
这里传入了2个参数,"I don't love you."和'I love you, you love me.'

我写的代码还有改进的余地吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-1 15:36:37 | 显示全部楼层    本楼为最佳答案   
本帖最后由 灰晨 于 2021-6-1 15:49 编辑
张静aa 发表于 2021-6-1 15:00
我写的代码还有改进的余地吗?


emmmm,你这代码错得有那么亿点点多。。
1.English letters和blank space命名就不规范,变量名除下划线不能有其他字符的(比如空格)
2.others后面也没加引号表示字符串,而且里面一堆符号还得考虑转义字符。。。
3.L1=list(temp)是把你输入的话一个字符当一个元素的,比如我输入love,L1就是['l','o','v'','e'],你后面English_letters in L1肯定是没有的啊,而且python是分大小写。。。
4.for each in L1你这个each就没见你用。。按你的思路你下面判断应该得if each in English_letters,你既然把你输入的话拆成一个一个元素,就应该判断这个元素在不在English_letters里,而不是判断English_letters在不在你这单个元素里
5.letter_count=0
numbers_count=0
blank_count=0
others_count=0
不能放循环里,不然每次循环都清0了。
6.print也少了个引号和%d的d
我帮你改了改
English_letters ='QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
numbers = '1234567890'
blank_space= ' '
others = '''`';.,/[]{}:""?><~!@#$%^&*()'''
temp = input('请输入一段话')
L1=list(temp)
letter_count=0
numbers_count=0
blank_count=0
others_count=0
for each in L1:
    if each in English_letters:
        letter_count += 1
    elif each in numbers:
        numbers_count += 1
    elif each in blank_space:
        blank_count += 1
    else:
        others_count += 1
print('英文字母%d个,数字%d个,空格%d个,其他字符%d个。'%(letter_count,numbers_count,blank_count,others_count))
而且你这代码只能传一段话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-1 19:49:30 | 显示全部楼层
灰晨 发表于 2021-6-1 15:36
emmmm,你这代码错得有那么亿点点多。。
1.English letters和blank space命名就不规范,变量名除下划 ...

好的,谢谢了。我好好理解下答案的做法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 18:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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