第一个作业:
换位字符词的判断思路:
根据师兄的讲解需要满足:
1.长度相同
2.各字符和其数量必须相等
因此,先判断长度,再将各字符和其数量找到并入字典,将两字典进行值相等的判断即可,详细代码和思路看我另外一篇博客,代码写的特别长,就不在这里写了。
每个字符词做成这样,判断字典的值是否相等即可
结果:
第二个是找2-1000的素数:
刚开始自己写没看别人代码的时候,用的是厄拉多赛筛法,相比之下减少了机器大量的运算量,是leetcode最高赞的算法,但我代码水平和逻辑水平有限,写了几十行才完成,留个坑,等能力够了简化后再说吧。
下面根据同学和网上资料重写的代码:先找到非素数,再减去它即素数
相关代码:
notsushu=[]
sushu=[]
for value in range(2,1001):
for chu in range(2,value):
if value%chu == 0:
notsushu.append(value) #找到非素数
for value2 in range(2,1001): #减去非素数
if value2 not in notsushu:
sushu.append(value2)
print(sorted(set(sushu)))
print(len(sushu))
第三个作业:
山脉数组的判断,将我的思路稍微写详细些:
先找到山峰(即最大值)的值和位置,从这一切为二,分别研究左右半边,先看一边(左边),这样即可:
右边的用reversed反转一下=左边,直接复制粘贴上面改名就行,两部分满足条件则是山脉数组,反之则否。
运行结果:
相关代码:
Y1=True
Y2=True
num = input("your number")
num_list = list(map(int,str(num)))#将数组拆分成一个个的数字,放到列表中
max_index = num_list.index(max(num_list))#找到最大值的位置
for value in num_list:
value_index =num_list.index(value)#找到值的位置
if value_index<max_index: #位置保证在山峰左侧
if value<=num_list[value_index+1]: #相邻值的判断
continue
else:
Y1 = False
elif Y1==False or value_index>=max_index: #保证必须在山峰左侧,一过就停止。
break
num_list2 =list(reversed(num_list)) #将右边反过来变成左边,复制上面的就可以了
max_index2 = num_list2.index(max(num_list2))
for value2 in num_list2:
value_index2 =num_list2.index(value2)
if value_index2<max_index2:
if value2<=num_list2[value_index2+1]:
continue
else:
Y2= False
elif Y2==False or value_index2>=max_index2:
break
if Y1==True and Y2==True:
print("这是山脉数组")
elif Y2== False or Y1== False:
print("这不是山脉数组")