这里是引用
这篇写的更详细点吧,方便以后回顾自己有多蠢。
根据其定义可知,首先满足字符长度相等,其次各字母或数字及其对应数目应该相同。
主要运用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("不会吧不会吧,拿尺子往屏幕上量都知道长度都不对,你还输进来?")