鱼C论坛

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

[已解决]第19讲动动手第1题..哪位大佬能讲一下运算步骤是咋实现的

[复制链接]
发表于 2018-6-18 13:45:40 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 woaizy1990 于 2018-6-18 17:40 编辑

我现在把count('I love fishc.com.', 'I love you, you love me.')这个条件代入进去哦.
我按照我的思路来写一下,大佬方便看看我哪一步思路出问题了?

def count(*param):             #创建count函数和形参,现在就按参数count('I love fishc.com.', 'I love you, you love me.')来演化
    length = len(param)           #length被赋值len(param),因为该count()内的参数一共有2组,length = 2
    for i in range(length):           #将range(length)代入i中;既 for i in range(2)
        letters = 0                   #赋值0
        space = 0                           #赋值0
        digit = 0                           #赋值0
        others = 0                   #赋值0
        for each in param{i}:    #将param{i}的值赋予each. 可能论坛问题啊,大括号i不显示,我用花括号代替一下
            if each.isalpha():           '''
                letters += 1        就是这个地方没搞明白.根据上述条件,param第一次循环的时候,也就是param[0]应该指向的是count()参数中的
            elif each.isdigit():          第一组字符串,既'I love fishc.com.' 后续哪一句命令执行了 param[0]的继续拆分?还是哪一步我理解错了?
                digit += 1                  '''
            elif each == ' ':
                space += 1
            else:
                others += 1
        print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。'
% (i+1, letters, digit, space, others))

========================================================================================

大家好,通过楼上2位朋友的教导我已经找到到哪里出问题了.
是我自己range()函数理解的不透彻造成了这种问题:
我现在将错误的思路保留在上面..如果有跟我犯同样错误的初学朋友希望别跟我一样 : ))))

=======================================================================================
for each in param{i}:  就已经将 param 参数中第0组的内容拆分了.所以无需再特意,
之前我的理解将param{i}第一次循环,既param[0], 'I love fishc.com.' 是整体代入each
实际for each in param{i} 的意思是将'I love fishc.com.'中所有的字符串内容分别代入each : )))

想了一下午没想明白真是笨死了,再次感谢@Ruina和@thexiosi朋友的解答.十分感谢!
================================================================
2楼3楼朋友答案都帮助我解开问题了额,但是最佳答案只能选一个..满纠结: (
所以我就
import random
x = random.randint(0,10)
if x > 5:
  print('2楼')
else:
  print('3楼')
一次定胜负结果是2楼
最佳答案
2018-6-18 14:30:21
本帖最后由 Ruina 于 2018-6-18 14:32 编辑

首先 param的第一个字符被赋值给 each   由后面的循环判断属性,结束后再把第二个字符赋值给each(具体理解参考 for in range )
(isalpha方法判断为字母则返回 True,否则返回 False,
为T跳出循环,否则继续判断isdigit,即是否为数字。
同理接下来判断是否为空,若都不是则为other)
param的所有字符全部判断一次后循环结束,打印结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-18 14:30:21 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Ruina 于 2018-6-18 14:32 编辑

首先 param的第一个字符被赋值给 each   由后面的循环判断属性,结束后再把第二个字符赋值给each(具体理解参考 for in range )
(isalpha方法判断为字母则返回 True,否则返回 False,
为T跳出循环,否则继续判断isdigit,即是否为数字。
同理接下来判断是否为空,若都不是则为other)
param的所有字符全部判断一次后循环结束,打印结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-18 16:48:46 | 显示全部楼层
hi 请lz参考

def count(*param):  #以 count('I love fishc.com.', 'I love you, you love me.') 为例
    length = len(param) #length=2
    for i in range(length):
        letters = 0
        space = 0
        digit = 0
        others = 0
#到这里我前面都明白的,但是往下有点迷糊了
        
    for each in param: #param是'I love fishc.com.', 'I love you, you love me.',因此 each分别取 'I',' ','l','o'.....
            if each.isalpha():
                letters += 1
#主要这里给搞糊涂了,还有下面的.我记得.isalpha是判断字符是否为字母
#哪位老师能指点下,程序是如何判断出索引 i 下的字符串包含多少字母或数字的?  |  通过if语句进行判定,如果是字母 走if each.isalpha()分支、如果是数字 走elif each.isdigit()分支、如果是空格 走elif each == ' '分支、其他情况走else分支;for循环语句保障每一个字符都进行了判定 且 所有字符都得到判定
            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 love fishc.com.', 'I love you, you love me.')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-18 17:04:04 | 显示全部楼层
本帖最后由 woaizy1990 于 2018-6-18 17:41 编辑

编辑编辑 : )))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-18 17:08:19 | 显示全部楼层
本帖最后由 woaizy1990 于 2018-6-18 17:21 编辑

编辑编辑编辑 : ))))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 11:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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