def花 发表于 2020-7-8 11:05:25

大佬们,课后作业QAQ

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.为什么会报错
2.两个for循环重复了,有没有办法不重复QAQ

Twilight6 发表于 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 :
            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.')

yhhpf 发表于 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 =
    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.')

lhgzbxhz 发表于 2020-7-8 15:22:43

问题1:应该这样:print('第1个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (oywzm, osz, okg, oqtzf))
问题2:可以封装成函数
页: [1]
查看完整版本: 大佬们,课后作业QAQ