练习题:主要运用if和for来编写是否为换位字符词的判断代码及编写的过程

这里是引用
这篇写的更详细点吧,方便以后回顾自己有多蠢。
根据其定义可知,首先满足字符长度相等,其次各字母或数字及其对应数目应该相同。
主要运用for循环和if判断,包括len,count,append,dict,zip函数

那么根据师兄对换位字符词的引导思路:
1.先判断长度是否相同
2.再判断其字母或数字及其对应数目是否相同。
那么根据这个来进行编写代码:

首先是判断长度,确定其大体框架,测试一波没什么问题,比较简单就不细说了:
在这里插入图片描述结果:在这里插入图片描述接下来就是最难的一步,根据师兄引导思路,我的想法是将字符词的各字母或数字提取出来,并找到他们对应的数目,将其合并成为一个字典或列表啥的,如果这两个的字典或列表完全相同,那么就是换位字符词,反之则否。

为避免之前框架的影响,重开了一个文档去打我上面的想法:
考虑到会有重复出现的元素,因此考虑只取每种元素中的一个到列表中,即统计有哪几种元素。
这就需要利用for循环和if判断语句:
在这里插入图片描述
结果如下图:
在这里插入图片描述
结果符合我自己的想法,继续往后一步步写。
接下来就是统计上面获得的列表中各元素在字符词的数量了
在这里插入图片描述
原理和上面的一样,但运用了count函数去数,
接下来继续打印测试:
在这里插入图片描述
ok,没问题,到这里就基本感觉快完成了。
接下来就是合并了,于是网上找到了合并的函数zip,将其合并新的字典:
在这里插入图片描述测试一下
这就已经好了:在这里插入图片描述
接下来就一点难度都没了,
第一个完成,第二个复制一下改一下变量名就好,将测试用print什么的删去,可以稍微简化下代码。
并再用一次if来比较两个字典是否相等来进行对用户提示即可
再直接插入到原来框架内适当位置就完成了。
在这里插入图片描述
最后结果如图:
在这里插入图片描述

以及最后代码:

zifu1 = input("请输入您的第一个字符词")
zifu2 = input("请输入您的第二个字符词")
len_zifu1 = len(zifu1)
len_zifu2 = len(zifu2)
zhifu1_allworld=[]
if len_zifu1==len_zifu2:
    #先只考虑第一个字符词
#先创建一个列表来存放提取第一个字符词全部的字母以及数字:
    zhifu1_allworld=[]
    for i in zifu1:
        if i[0] not in zhifu1_allworld:
            zhifu1_allworld.append(i[0])
    #再创建另一个列表存放检索每个字母及数字出现次数:
    count_zifu1=[]
    for value in zhifu1_allworld:
    #此处括号内代表的是每次都选前面count_zifu1列表的第一个数,去找第一个字符词内有多少个这个数。
        count_zifu1.append(zifu1.count(value[0]))
    #将对应字母和次数合并成为新的字典:
    hebing1 = dict(zip(zhifu1_allworld,count_zifu1))
    #第二个复制黏贴改下名称就好了:
    zhifu2_allworld=[]
    for i2 in zifu1:
        if i2[0] not in zhifu2_allworld:
            zhifu2_allworld.append(i2[0])
    count_zifu2=[]
    for value2 in zhifu2_allworld:
        count_zifu2.append(zifu2.count(value2[0]))
    hebing2 = dict(zip(zhifu2_allworld,count_zifu2))
    if hebing1==hebing2:
        print('没错,这就是换位字符词!')
    else:
        print("虽然长度相同了,但他们字符以及对应数量不相同啊!")
        print("所以这不是换位字符词!")
else:
    print(f'第一个字符词的长度是{len_zifu1}')
    print(f'第二个字符词的长度是{len_zifu2}')
    print("不会吧不会吧,拿尺子往屏幕上量都知道长度都不对,你还输进来?")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值