数据结构与算法python语言实现-第一章答案_minmaxdata-程序员宅基地

技术标签: python  数据结构与算法  

数据结构与算法python语言实现-第一章答案


把第一章的代码补完了。一起学习,请大家多指正,谢谢。
数据结构与算法python第一章答案和提示打包
链接是 link.

习题1.3 编写一个Python函数 minmax(data),用来在数的序列中找出最小数和最大数,并以一个长度为 2 的元组的形式返回。注意:不能通过内置函数 min 和 max 来实现。
代码如下:

def minmax(data):
    size=len(data)
    max=data[0]
    min=data[0]
    for fig in data:
        if fig > max:
            max=fig
        if fig< min:
            min=fig
    return [min,max]
data=[1,2,8,9,23,45,64,8,123,875,321]
print(minmax(data))

1.4 编写一个Python函数,用来接收正整数 n,返回 1 ~ n 的平方和。

def quadratic_sum(n):
    sum=0
    for i in range(1,n+1):
        sum+=i*i
    return sum
n=int(input('输入n'))
print(quadratic_sum(n))

1.5 基于Python的解析语法和内置函数 sum,写一个单独的命令来计算练习R-1.4中的和。

n=4
print(sum(i*i for i in range(1,n+1)))#生成器解析
print(sum({i*i for i in range(1,n+1)}))#集合解析
print(sum([i*i for i in range(1,n+1)]))#列表解析

1.6 编写一个Python函数,用来接收正整数n,并返回 1 ~ n 中所有的奇数的平方和。
1.7 基于Python的解析语法和内置函数 sum,写一个单独的命令来计算练习R-1.6中的和。

n=6
print(sum(i*i for i in range(1,n+1,2)))#生成器解析 1+9+25=35

1.8 Python 允许负整数作为序列的索引值,如一个长度为 n 的字符串 s,当索引值-n<=k<0时,所指的元素为s[k],那么求一个正整数索引值j>=0,使得s[j]指向的也是相同的元素。

s='python'
k=2
print(s[-1*k])
print(s[len(s)-k])

1.9 要生成一个值为 50, 60, 70, 80 的排列,求 range构造函数的参数.

for i in range(50,90,10):
    print(i)

1.10 要生成一个值为 8, 6, 4, 2, 0, -2, -4, -6, -8 的排列,求 range 构造函数中的参数。

for i in range(-8,10,2):
   print(i)

1.11 演示怎样使用 Python 列表解析语法来产生列表 [1, 2, 4, 8, 16, 32, 64, 128, 256].

print([2**i for i in range(1,9)])

1.12 Python 的 random 模块包括一个函数 choice(data),可以从一个非空序列返回一个随机元素。Random模块还包含一个更基本的 randrange 函数,参数化类似于内置的 range 函数,可以在给定范围内返回一个随机数。只使用 randrange 函数,实现自己的 choice 函数。

# 字符串,列表,元组都可以看作序列
from random import randrange
def choice(data):
   c = randrange(0,len(data))
   print(c)
   return data[c]

data='python'
print(choice(data))

1.13 编写一个函数的伪代码描述,该函数用来逆置 n 个整数的列表,使这些以相反的顺序输出,并将该方法与可以实现相同功能的 Python 函数进行比较。

data=[12,55,31,654,99,12]
trans=[]
for i in range(1,len(data)+1):  #从-1开始
   trans.append(data[-1*i])
print(trans)

1.14 编写一个 Python 函数,用来接收一个整数序列,并判断该序列中是否存在一对乘积是奇数的互不相同的数。

def if_odd(array):
   result=[]
   for i in range(0,len(array)):
       for j in range(i+1,len(array)):
           if array[i]*array[j]%2==1:
               result.append([array[i],array[j]])
   return result
   # print(i,j,array[i],array[j])
array=[3,4,6,5,7]
print(if_odd(array))

1.15

def if_dif(array):
    result=[]
    for i in range(0,len(array)):
        for j in range(i+1,len(array)):
            if array[i]==array[j]:
                result.append([i,j])
    return result
    # print(i,j,array[i],array[j])
array=[3,4,6,5,7,6,4]
print(if_dif(array))#输出相同的序号组

1.16

def scale(data,factor):
    for j in range(len(data)):
        data[j]=data[j]*factor#形参指向实参,调用形参(实参)里的内容,则可以改变实参
    data=[]#直接对形参赋值,改变了别名,使形参data指向了一个[]空列表,而不能改变实参,因为原本形参就是指向实参的一个别名。
grade=[0,56,3]
factor=2
scale(grade,factor)
print(grade)

1.17

def scale(data,factor):
    for val in data:
        val *=factor
grade=[0,56,3]
factor=2
scale(grade,factor)
print(grade)

1.18


print([2*sum(range(0,i+1)) for i in range(0,10)])
# s=0
# print([s+2*i for i in range(0,10)])
# 不能用之前迭代的结果做下次迭代的参数

1.19

print([chr(ord('a')+i) for i in range(0,26)])
#p20 chr(integer) 返回给定Unicode编码的字符
#    order(char)返回给定字符的Unicode编码的编码值

1.20

from random import randint


def shuffle(data):
    new = []
    for i in range(0, len(data)):
        new.append(data[randint(0, len(data) - 1)])
    return new

data = [5, 6, 8, 5, 8, 7, 1, 123]
print(shuffle(data))

1.21

result = []
while True:
    try:
        result.append(input('输入'))
    except EOFError:
        break
for i in range(1, len(result) + 1):
    print(result[-1 * i])

1.22

z1=list(map(int,input('数组1').split()))#map函数,映射
z2=list(map(int,input('数组2').split()))
result=0
for i in range(0, len(z1)):
    result = result + z1[i] * z2[i]
print(result)

1.23

data=[1]
try:
    for i in range(len(data)):
        print(data[i+5])
except IndexError:
    print("Don't try buffer overflow attacks in Python!")

1.24

phrase=input('pleas enter the phrase')
number=0
for alphabet in phrase:
    if alphabet=='a'or alphabet=='e'or alphabet=='i'or alphabet=='o'or alphabet=='u':
        number+=1
print(number)

1.28

def norm(num_list,order):
    return sum(num**order for num in num_list)**(1/order)
data=[1,3,5]
p=3
print(norm(data,p))
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m3113940/article/details/95936050

智能推荐

无涯教程-Redis - UNSUBSCRIBE 命令函数-程序员宅基地

文章浏览阅读372次,点赞8次,收藏10次。Redis UNSUBSCRIBE 命令从给定通道取消订阅客户端,如果没有给出通道,则从所有通道取消订阅。

linux下vivado tcl使用 & linux环境变量设置-程序员宅基地

文章浏览阅读1.5k次。设置永久的环境变量在path环境变量中添加Vivado的路径,路径设置到bin文件夹,例如C:\Xilinx\Vivado\2014.1\bin永久设置需要更改/etc/profile文件在最后一行添加export CLASSPATH=./opt/Xilinx/2016.4/vivado/bin命令行使用tclvivado -mode tcl要注意,使用前要先source一下sett..._安装vivado后怎么设置环境变量

使用nacos框架进行服务发现与配置管理时,启动SpringBoot出错!_reason: failed to convert java.lang.string to java-程序员宅基地

文章浏览阅读527次。使用nacos框架进行服务发现与配置管理时,启动SpringBoot出错!什么个出错法???就是在向nacos提交服务的时候,在bootstrap.yml配置spring:cloud:namespace时,提交的id异常。Description:Failed to bind properties under 'spring.http.encoding.charset' to java.nio.charset.Charset: Property: spring.http.encoding._reason: failed to convert java.lang.string to java.nio.charset.charset

camera基本知识_camera 科普视频-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏15次。转载于https://blog.csdn.net/wang714818/article/details/78088424 一 Camera模组 大家都知道,手机背面的那个小小的孔,就叫摄像头..._camera 科普视频

STM32+华为LiteOS操作系统+M5311NB模组项目实战_liteos studio操作树莓派-程序员宅基地

文章浏览阅读6k次。title: STM32+华为LiteOS操作系统+M5311NB模组项目实战tags: LiteOSdate: 2019-06-20 23:30:00之前尝试了STm32与RT-thread操作系统的配合使用效果还是很不错的,前一段儿我又看了下华为的操作系统LiteOS,并参考了野火的教程,完成了STM32项目的移植,两者整体上也是很类似的,感觉没有RT-thread的简洁,不过也..._liteos studio操作树莓派

DeepStream之deepstream_test1_app解析_怎么在deepstream test1 app 添加像素点-程序员宅基地

文章浏览阅读4.6k次,点赞9次,收藏37次。1. 项目介绍项目路径:opt\nvidia\deepstream\deepstream-5.0\sources\apps\sample_apps\deepstream-test1这个项目是一个Deepstream中一个简单的demo, 用来教我们如何在pipeline中使用各种DeepStream SDK elements从而在流数据中得到一些有意义的信息。2. 应用程序整体PipeLine结构图3. 如何使用?Compilation Steps: $ cd apps/d.._怎么在deepstream test1 app 添加像素点

随便推点

内存管理-程序员宅基地

文章浏览阅读99次。本文将对 Linux 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存,以及如何使用垃圾收集自动管理内存。为什么必须管理内存内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管理的重要...

【AUTOSAR-COM】-6.1-图解Signal的Transfer Property与I-PDU的Transmission Mode二者的关系_pdu和signal-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏7次。返回「《Autosar_BSW高阶配置》总目录」案例背景(共10页精讲):并例举了常用的7个Case,逐个剖析。AUTOSAR COM模块支持Signal信号的多种transfer properties和I-PDU的多种transmission modes,二者的组合会是怎样一个效果呢?一个I-PDU可以包含若干个Signal和若干个Signal Group。Signal Group信号组和Group Signal组信号也可以具有transfer properties,将放在下一篇讲解。_pdu和signal

【美团外卖】广告算法 高级研发工程师/技术专家_美团成都广告算法-程序员宅基地

文章浏览阅读990次。岗位职责: 1,广告相关算法的研究及开发工作; 2,CTR/CVR预估算法及系统的研发; 3,O2O广告模式、机制策略的探索研究; 4,Query分析及相关性的研究; 5,智能投放、运营侧算法的研究与优化; 岗位要求 : 1,熟练掌握linux下面向对象编程;(熟悉Java最好) 2,熟悉机器学习、数据挖掘知识、NLP; 3,对数据敏感,有较强数据分析和解决问题能力;_美团成都广告算法

C语言编程实现,计算每天进步一点点一年后的效果_每天进步一点点c语言-程序员宅基地

文章浏览阅读4.9k次,点赞4次,收藏16次。pow() 函数用来求 x 的 y 次幂(次方),x、y及函数值实际上为double型 ,其在使用中的原型为:double pow(double x, double y);原基数为1,努力一天进步1%,效果1*(1+0.01),努力两天是在前一天的基础上进步1%,结果是1*(1+0.01)*(1+0.01),一年后天天向上的力量是(1+0.01)的365次方。本来的基数为1,如果好好学习时能力值相比前一天提高1%,当放任时相比前一天下降1%。相反的力量一年后是(1-0.01)的365次方。_每天进步一点点c语言

C#匿名类型_c# 逆名类 添加项-程序员宅基地

文章浏览阅读2k次。一、利用C#的匿名类型的功能,可以使用非常简洁的语法来声明一个不可变(immutable)的元组类型。元组类型时含有一组属性的类型,这些属性通常以某种方式相互关联。 –第一行代码创建了一个匿名类型,我没有在new关键字后制定类型名称,所以编译器会为我自动创建一个类型名称,而且不会告诉我这个名称具体是什么。 –编译器遇到这一行代码,会推断每个表达式的类_c# 逆名类 添加项

Windows上FreeRDP-WebConnect是一个开源HTML5代理,它提供对使用RDP的任何Windows服务器和工作站的Web访问_freerdpwebconnect-程序员宅基地

文章浏览阅读7.2k次。Windows上的FreeRDP HTML5代理FreeRDP-WebConnect是一个开源HTML5代理,它提供对使用RDP的任何Windows服务器和工作站的Web访问。结果是惊人的,特别是考虑到不需要本机客户端,只需一个简单的Web 浏览器即可!平台支援在过去的几年中,HTML5取得了长足的进步,任何主流的Web浏览器(包括移动平台)都支持WebSockets,这是FreeRDP-WebConnect所采用的基本通信机制。以下是受支持的台式机和移动浏览器的列表:火狐..._freerdpwebconnect

推荐文章

热门文章

相关标签