python数据结构与算法,第一章练习题

 这个博客权当我自己的学习记录,所以参考一些网上的代码 数据结构与算法Python语言实现第一章课后习题(完整篇)_王胖子总叫我减肥的博客-CSDN博客 这位大牛的代码让我获益良多,感谢感谢。

 1.1

def is_multiple(n,m):
    if n%m==0:
        return True
    else:
        return False

print(is_multiple(12,5))

 1.2

def is_even(num):
    num=str(num)
    unit=num[-1]
    if unit in ['0','2','4','6','8']:
        return True
    else:
        return False
print(is_even(47))

 1.3自己的思路

做这道题一定要注意的是列表中的数据是什么格式,如果是int,没问题,如果是字符串格式的,进入if判断前必须先转换为int格式,否则比出来的结果是不对的,字符串在内存中也有一个值 ,如果不转换,比的就是它的值。

def maxmin(data):
    length=len(data)  #6
    max_num=0
    for i in range(length-1):   #5,只能取到4,如果是(1,length)会报错,少取一个数,
        if int(data[i])>int(data[i+1]):   #但下面有i+1,所以并不会漏掉最后一个
            data[i],data[i+1]=data[i+1],data[i]
    max_num=data[i+1]#取最后一个,因为第一个和第二个比,大的话换位置,大的在后面
    print(data[i+1]) #  6
    min_num = 0
    for j in range(length - 1):
        if int(data[j]) < int(data[j + 1]):
            data[j],data[j+1]=data[j+1],data[j]
    print(data[j+1])  #还是最后一个,前两个比,如果第一个小,换位置,小的还是在后面
    min_num=data[j+1]  #1
    # print的值和return的值不一样,i最后的存留值是4,加1为5,此时data的顺序已变了,
    # 最后一个是最小的,而前面赋值的,max,min不会变化
    # print(data.index(data[i+1]),data[i+1],data.index(data[j+1]),data[j+1])
    return max_num,min_num
print(maxmin(['3', '4', '2', '1', '6', '5']))

 方法二:用选择排序做

# 用选择排序做
def maxmin(data):
    length=len(data)
    for i in range(length-1):
        for j in range(i+1,length):
            if int(data[i])>int(data[j]):
                data[i],data[j]=data[j],data[i]
    return '{}为最大的数{}为最小的数'.format(data[5],data[0])
print(maxmin(['3', '2', '4', '5', '6', '1']))

方法三:用冒泡排序做 

def maxmin(data):
    length=len(data)
    for i in range(1,length):
        for j in range(length-i):
            if int(data[j])>int(data[j+1]):
                data[j],data[j+1]=data[j+1],data[j]
    return '最小的数为%s最大的数为%s'%(data[0],data[5])

print(maxmin(['3', '2', '4', '5', '6', '1']))

 1.4

def sum_squares():
    inp=int(input('请输入整数:\n'))
    temp=0
    for i in range(1,inp+1):
        temp+=i**2
    return temp
print(sum_squares())

 1.5

​​​​​​​a=sum([i*i for i in range(11)])
print(a)
##########1.6
# def a_add(a):
#     c=0
#     for i in range(a):
#         if i%2!=0:
#             b=i**2
#             c+=b
#     return c
# print(a_add(int(input('数字:'))))
#1.7
# n=int(input("数字:"))
# even_square_sum=sum([i*i for i in range(n) if i%2!=0])
# print(even_square_sum)

# 1.8

k=-5
a=['1', '2', '3', '4', '5', '6', '7']
length=len(a)
print(a[k])
j=k+length
print(a[j])
# 1.9

for i in range(50,90,10):
print(i,end="")
# 1.10
# for i in range(8,-9,-2):
#     print(i)

1.11

list1=[2**i for i in range(9)]

1.12

data=['1', '2', '3', '4', '5', '6', '7']
def Mychoice(data):
    import random
    return data[random.randrange(len(d
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值