1、判断两个字符串是否为换位符(字符长度相等,字符内元素相同且个数相同)
a=input("请输入一个字符串:")
b=input("请输入另一个字符串:")
print(a+"和"+b)
a=list(a) #将字符串转化为列表
b=list(b)
a.sort() #对列表内的元素进行排序
b.sort()
if a==b:
print("是换位符")
else:
print("不是换位符")
效果如下
这里要说一下字符串转化为列表
对于字符串a,输入123,如果用a=list(a),得到的列表a是a=[1,2,3],如果用a=a.split(’,’),得到的列表a是a=[123],但如果你字符串a,输入的是1,2,3,用a=a.split(’,’),得到的列表a则是a=[1,2,3]
以上的是我的不太严谨的程序,以下是我在网上找到的程序,分享给大家
def compare(s1, s2):
result = True
bCount = [None] * 256 # 申请大小为256的数组来记录各个字符出现的字数
# 将数组置0
i = 0
while i < 256:
bCount[i] = 0
i += 1
# 遍历一个字符串,记录对应的AS码个数
i = 0
while i < len(s1):
bCount[ord(list(s1)[i]) - ord('0')] += 1
i += 1
# 遍历第二个字符串
i = 0
while i < len(s2):
bCount[ord(list(s2)[i]) - ord('0')] -= 1
i += 1
i = 0
while i < 256:
if bCount[i] != 0:
result = False
break
i += 1
return result
if __name__ == "__main__":
str1 = input("请输入一个字符串:")
str2 = input("请输入另一个字符串:")
print(str1+"和"+str2)
if compare(str1, str2):
print("是换位符")
else:
print("不是换位符")
结果我就不展示了,不过话说回来,其实这个程序我有点看不懂啊
2、判断数组[0,3,2,1]是否为山脉数组
这个程序,如果是要判断这组数组是否为山脉数组还是比较简单的
一代:
a=0
b=3
c=2
d=1
if a<b and b>c and c>d:
print("该数组是山脉数组")
elif a<b and b<c and c>d:
print("该数组是山脉数组")
else:
print("该数组不是山脉数组")
一代仅仅只能针对[0,3,2,1]这一个数组,缺陷倒是挺大的
二代:
num=input("请你输入一个数组:")
print([num])
num=list(num)
a=num.pop(0)
b=num.pop(0)
c=num.pop(0)
d=num.pop(0)
if a<b and b>c and c>d:
print("该数组是山脉数组")
elif a<b and b<c and c>d:
print("该数组是山脉数组")
else:
print("该数组不是山脉数组")
亮成果
在一代的基础上,二代就不是再针对[0,3,2,1]这一个数组了,而是可以面向所有len(a)=4的数组,但要写出一个能面向所有数组的判断程序(我称之为三代),我想了很久还是没有想到解决办法。(一是本人对于python的学习还只是刚刚开始,个人能力有限。
二是在网上找了很久山脉数组判断程序,但一直没找到能顺利运行下去的程序。
三是网上一些与山脉数组相关的程序,实在是看不懂他们的python语言,也就没有了借鉴价值。)
3、写一个找到2~1000以内所有素数的程序
关于这个程序,我想和大家分享三种算法(严格来说只有两种,因为第一种和第二种基本上是一样的)
这个是我最开始的成品
prime=[] #用一个列表来存储素数
for i in range(2,1001): #range“前闭后开”
number=True
for j in range(2,i):
if i%j==0:
number=False
break #不是素数
if number==True: #Python的True首字母大写
prime.append(i) #append(i)把i添加到列表末尾
print(prime)
len(prime) #确认列表长度
这个是我在参考了同学们的算法后,对我最开始的算法的简化
prime=[] #用一个列表来存储素数
for i in range(2,1001): #range“前闭后开”
for j in range(2,i):
if i%j==0:
break #不是素数
else:
prime.append(i) #append(i)把i添加到列表末尾
print(prime)
len(prime) #确认列表长度
上图
最后,就是在网上找的大佬算法
print(' '.join([str(item) for item in filter(lambda x: not [x % i for i in range(2, x) if x % i == 0], range(2, 1001))]))
我除了说牛逼,还能说什么
好了,以上就是本期课后作业的所有内容,感谢部门伙伴和百度的倾情赞助