第一次培训课后作业

这次作业周五前有写好,但是没有发是想等着再思考一波看看能不能做完或者改进代码。但是周末事情有点多,耽搁了。下面放一下作业。

1、找出1-1000以内的质数
这个题之前有写过类似的,直接上代码吧。

num=[];
i=2
for i in range(2,1001):
    j=2
    for j in range(2,i):
        if(i%j==0):
            break
    else:
        num.append(i)
print('1-1000以内的质数有'+str(num))

运行结果:
在这里插入图片描述

2、判断[0,3,2,1]是否为山脉数值
我觉得这道题,如果单纯判断这个应该是很简单的,然后写了一个通用但同时也局限(只限四位数字)的代码。

num=[]
a=int(input('请输入第一个数字'))
b=int(input('请输入第二个数字'))
c=int(input('请输入第三个数字'))
d=int(input('请输入第四个数字'))
num.append([a,b,c,d])
if a<b and c<b and d<c:
    print(str(num)+'是山脉数值')
else:
    print(str(num)+'不是山脉数值')

运行结果:
在这里插入图片描述

不过不清楚怎么一次输入所有数值。后面是参考了某位兄弟的。

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("该数组不是山脉数组")

然后是看了答案之后的代码:(果然开始想的太简单

a = list(input('输入连续数字')) 
Jud = []
up = 0
down = 0
#遍历列表元素判断该元素位置前是否单调递增,后是否单调递减
for j in range(len(a)-1):
    judge = True
    print('-'*20,j,'-'*20)
    value = a[j+1]
    value_p = value
    for previous in range(j,-1,-1):   
        if a[previous] < value_p:
            print('目前递增,当前元素为{},上一个为{}'.format(value_p,a[previous]))
            value_p = a[previous]
        else:
            judge = False
    value_n = value
    for next_num in range(j+2,len(a)):
        if a[next_num] < value_n:
            print('目前递减,当前元素为{},下一个为{}'.format(value_n,a[next_num]))
            value_n = a[next_num]
        else:
            judge = False
    #若有一个元素符合山脉数组定义,append judge=True python中True=1,False=0
    Jud.append(judge)
    print('-'*40)
#如果有一个元素符合山脉数组,输出是,反则不是
if sum(Jud) > 0:
    print('是山脉数组')
else:
    print('不是山脉数组')

(。)记录一下,看的不是很懂。
3、判断两个字符串是否为换位字符串。
这是开始的想法

str1=str(input('请输入第一个字符串'))
str2=str(input('请输入第二个字符串'))
list1=list(str1)
list2=list(str2)
a=len(list1)
b=len(list2)
if a==b:
    for i in list1:
        for j in list2:
            if i==j:
                print('[{},{}]是换位字符串'.format(str1,str2))
                break
            else:
                print('[{},{}]不是换位字符串'.format(str1,str2))
                break
else:
    print('[{},{}]不是换位字符串'.format(str1,str2))

好家伙 结果如下:
在这里插入图片描述
看了结果就知道自己错哪了(。)后面打算复习一下内容再写。下面是一位小伙伴的结果,记录一下!

str1=str(input("输入第一个字符串:"))
str2=str(input("输入第二个字符串:"))
list1 = list(str1)
list2 = list(str2)
list1.sort()
list2.sort()
print(list1)
print(list2)
if list1==list2:
    print('[{},{}]是换位字符串'.format(str1,str2))
else:
    print('[{},{}]不是换位字符串'.format(str1,str2))

运行结果:
在这里插入图片描述
然后是网上搜索的(第一部分有自己修改):

str1=str(input('请输入第一个字符串'))

str2 =str(input('请输入第二个字符串'))


list1 = list(str1)

list2 = list(str2)

i = 0

hashTable1 = dict()
while i < len(str1):
    if list1[i] not in hashTable1:
        hashTable1[list1[i]] = 0
    i += 1
i = 0

hashTable2 = dict()

while i < len(str2):

    if list2[i] not in hashTable2:

        hashTable2[list2[i]] = 0

    i += 1

count = 0

for k, v in hashTable1.items():

    if k in hashTable1:
        count += 1
if count == len(hashTable2):
	print("是换位字符")

#作者:天空之上02
#链接:https://www.jianshu.com/p/70d175bed433
#来源:简书

运行结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值