第19讲最后一题动动手求助
题目: 编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。代码:
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'
不知道咋改,求大神指教!谢谢啦~ def count(*param):
length = len(param)
for i in range(length):
letters = 0
space = 0
digit = 0
others = 0
for each in param:
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.' 灰晨 发表于 2021-6-1 14:39
这里传入了2个参数,"I don't love you."和'I love you, you love me.'
我写的代码还有改进的余地吗?{:10_250:} 本帖最后由 灰晨 于 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))
而且你这代码只能传一段话 灰晨 发表于 2021-6-1 15:36
emmmm,你这代码错得有那么亿点点多。。
1.English letters和blank space命名就不规范,变量名除下划 ...
{:10_266:}好的,谢谢了。我好好理解下答案的做法
页:
[1]