正文
python函数简单题 python基础题库及答案
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
一道关于python题?
def fun(n):
#**********Program**********
s=0
i=3
while i=n:
print(i,end=" ") #输出3的倍数,测试过程,正式提交程序时要删除。
s+=i
i+=3
return s
#********** End **********
def main():
print("【请分别三次计算问题:】")
for i in range(3):
print("【第%d次:】" %(i+1))
n = int(input("【请输入一个大于1的正整数n:】"))
print("【1到"+str(n)+"之间能被3整除的所有整数之和为:】",fun(n))
if __name__ == '__main__':
main()
python的简单问题?
要把代码发现来才知道,以下是常见的错误下面终于要讲到当你用到更多的Python的功能(数据类型,函数,模块,类等等)时可能碰到的问题了。由于篇幅有限,这里尽量精简,尤其是对一些高级的概念。要想了解更多的细节,敬请阅读Learning Python, 2nd Edition的逗小贴士地以及逗Gotchas地章节。 打开文件的调用不使用模块搜索路径当你在Python中调用open()来访问一个外部的文件时,Python不会使用模块搜索路径来定位这个目标文件。它会使用你提供的绝对路径,或者假定这个文件是在当前工作目录中。模块搜索路径仅仅为模块加载服务的。不同的类型对应的方法也不同列表的方法是不能用在字符串上的,反之亦然。通常情况下,方法的调用是和数据类型有关的,但是内部函数通常在很多类型上都可以使用。举个例子来说,列表的reverse方法仅仅对列表有用,但是len函数对任何具有长度的对象都适用不能直接改变不可变数据类型记住你没法直接的改变一个不可变的对象(例如,元组,字符串): T = (1, 2, 3) T[2] = 4 # 错误 用切片,联接等构建一个新的对象,并根据需求将原来变量的值赋给它。因为Python会自动回收没有用的内存,因此这没有看起来那么浪费: T = T[:2] + (4,) # 没问题了: T 变成了 (1, 2, 4) 使用简单的for循环而不是while或者range 当你要从左到右遍历一个有序的对象的所有元素时,用简单的for循环(例如,for x in seq:)相比于基于while-或者range-的计数循环而言会更容易写,通常运行起来也更快。除非你一定需要,尽量避免在一个for循环里使用range:让Python来替你解决标号的问题。在下面的例子中三个循环结构都没有问题,但是第一个通常来说更好;在Python里,简单至上。 S = "lumberjack" for c in S: print c # 最简单 for i in range(len(S)): print S[i] # 太多了 i = 0 # 太多了 while i len(S): print S[i]; i += 1 不要试图从那些会改变对象的函数得到结果诸如像方法list.append()和list.sort()一类的直接改变操作会改变一个对象,但不会将它们改变的对象返回出来(它们会返回None);正确的做法是直接调用它们而不要将结果赋值。经常会看见初学者会写诸如此类的代码: mylist = mylist.append(X) 目的是要得到append的结果,但是事实上这样做会将None赋值给mylist,而不是改变后的列表。更加特别的一个例子是想通过用排序后的键值来遍历一个字典里的各个元素,请看下面的例子: D = {...} for k in D.keys().sort(): print D[k] 差一点儿就成功了——keys方法会创建一个keys的列表,然后用sort方法来将这个列表排序——但是因为sort方法会返回None,这个循环会失败,因为它实际上是要遍历None(这可不是一个序列)。要改正这段代码,将方法的调用分离出来,放在不同的语句中,如下: Ks = D.keys() Ks.sort() for k in Ks: print D[k] 只有在数字类型中才存在类型转换在Python中,一个诸如123+3.145的表达式是可以工作的——它会自动将整数型转换为浮点型,然后用浮点运算。但是下面的代码就会出错了: S = "42" I = 1 X = S + I # 类型错误 这同样也是有意而为的,因为这是不明确的:究竟是将字符串转换为数字(进行相加)呢,还是将数字转换为字符串(进行联接)呢看在Python中,我们认为逗明确比含糊好地(即,EIBTI(Explicit is better than implicit)),因此你得手动转换类型: X = int(S) + I # 做加法: 43 X = S + str(I) # 字符串联接: "421" 循环的数据结构会导致循环尽管这在实际情况中很少见,但是如果一个对象的集合包含了到它自己的引用,这被称为循环对象(cyclic object)。如果在一个对象中发现一个循环,Python会输出一个[…],以避免在无限循环中卡住: L = ['grail'] # 在 L中又引用L自身会 L.append(L) # 在对象中创造一个循环 L ['grail', [...]] 除了知道这三个点在对象中表示循环以外,这个例子也是很值得借鉴的。因为你可能无意间在你的代码中出现这样的循环的结构而导致你的代码出错。如果有必要的话,维护一个列表或者字典来表示已经访问过的对象,然后通过检查它来确认你是否碰到了循环。赋值语句不会创建对象的副本,仅仅创建引用这是Python的一个核心理念,有时候当行为不对时会带来错误。在下面的例子中,一个列表对象被赋给了名为L的变量,然后L又在列表M中被引用。内部改变L的话,同时也会改变M所引用的对象,因为它们俩都指向同一个对象。 L = [1, 2, 3] # 共用的列表对象 M = ['X', L, 'Y'] # 嵌入一个到L的引用 M ['X', [1, 2, 3], 'Y'] L[1] = 0 # 也改变了M M ['X', [1, 0, 3], 'Y'] 通常情况下只有在稍大一点的程序里这就显得很重要了,而且这些共用的引用通常确实是你需要的。如果不是的话,你可以明确的给他们创建一个副本来避免共用的引用;对于列表来说,你可以通过使用一个空列表的切片来创建一个顶层的副本: L = [1, 2, 3] M = ['X', L[:], 'Y'] # 嵌入一个L的副本 L[1] = 0 # 仅仅改变了L,但是不影响M L [1, 0, 3] M ['X', [1, 2, 3], 'Y'] 切片的范围起始从默认的0到被切片的序列的最大长度。如果两者都省略掉了,那么切片会抽取该序列中的所有元素,并创造一个顶层的副本(一个新的,不被公用的对象)。对于字典来说,使用字典的dict.copy()方法。静态识别本地域的变量名 Python默认将一个函数中赋值的变量名视作是本地域的,它们存在于该函数的作用域中并且仅仅在函数运行的时候才存在。从技术上讲,Python是在编译def代码时,去静态的识别本地变量,而不是在运行时碰到赋值的时候才识别到的。如果不理解这点的话,会引起人们的误解。比如,看看下面的例子,当你在一个引用之后给一个变量赋值会怎么样: X = 99 def func(): ... print X # 这个时候还不存在 ... X = 88 # 在整个def中将X视作本地变量 ... func( ) # 出错了! 你会得到一个逗未定义变量名地的错误,但是其原因是很微妙的。当编译这则代码时,Python碰到给X赋值的语句时认为在这个函数中的任何地方X会被视作一个本地变量名。但是之后当真正运行这个函数时,执行print语句的时候,赋值语句还没有发生,这样Python便会报告一个逗未定义变量名地的错误。事实上,之前的这个例子想要做的事情是很模糊的:你是想要先输出那个全局的X,然后创建一个本地的X呢,还是说这是个程序的错误看如果你真的是想要输出这个全局的X,你需要将它在一个全局语句中声明它,或者通过包络模块的名字来引用它。默认参数和可变对象在执行def语句时,默认参数的值只被解析并保存一次,而不是每次在调用函数的时候。这通常是你想要的那样,但是因为默认值需要在每次调用时都保持同样对象,你在试图改变可变的默认值(mutable defaults)的时候可要小心了。例如,下面的函数中使用一个空的列表作为默认值,然后在之后每一次函数调用的时候改变它的值: def saver(x=[]): # 保存一个列表对象 ... x.append(1) # 并每次调用的时候 ... print x # 改变它的值 ... saver([2]) # 未使用默认值 [2, 1] saver() # 使用默认值 [1] saver() # 每次调用都会增加! [1, 1] saver() [1, 1, 1] 有的人将这个视作Python的一个特点——因为可变的默认参数在每次函数调用时保持了它们的状态,它们能提供像C语言中静态本地函数变量的类似的一些功能。但是,当你第一次碰到它时会觉得这很奇怪,并且在Python中有更加简单的办法来在不同的调用之间保存状态(比如说类)。要摆脱这样的行为,在函数开始的地方用切片或者方法来创建默认参数的副本,或者将默认值的表达式移到函数里面;只要每次函数调用时这些值在函数里,就会每次都得到一个新的对象: def saver(x=None): ... if x is None: x = [] # 没有传入参数看 ... x.append(1) # 改变新的列表 ... print x ... saver([2]) # 没有使用默认值 [2, 1] saver() # 这次不会变了 [1] saver() [1] 其他常见的编程陷阱下面列举了其他的一些在这里没法详述的陷阱:在顶层文件中语句的顺序是有讲究的:因为运行或者加载一个文件会从上到下运行它的语句,所以请确保将你未嵌套的函数调用或者类的调用放在函数或者类的定义之后。 reload不影响用from加载的名字:reload最好和import语句一起使用。如果你使用from语句,记得在reload之后重新运行一遍from,否则你仍然使用之前老的名字。在多重继承中混合的顺序是有讲究的:这是因为对superclass的搜索是从左到右的,在类定义的头部,在多重superclass中如果出现重复的名字,则以最左边的类名为准。在try语句中空的except子句可能会比你预想的捕捉到更多的错误。在try语句中空的except子句表示捕捉所有的错误,即便是真正的程序错误,和sys.exit()调用,也会被捕捉到。
小猿圈python之python期末考试测试题(一)
又快临近期末考试了,小伙伴们是不是又开始焦虑了呢?挂科怎么办?如果很幸运看到我的文章,你就偷着乐吧,我总结出:一般python期末考试老师们最爱考的内容,一定要好好看啊,争取做到python不挂科;还有暑假马上来了,小伙伴们可以在闲暇之际,看看小猿圈的视频,为以后找工作垫垫基础,也是很不错的。
一、选择题
1、已知x=[1,2]和y=[3,4],那么x+y等于什么( )
A、3 B、7 C、[1,2,3,4] D、[4,6]
2、os.path模块的下列方法,哪个是用来判断指定路径是否存在的?( )
A、exists() B、exist() C、getsize() D、isfile()
3、以下选项中不是 Python 对文件的写操作方法的是 ( D )
A、 writelines B、write C、rite 和 seek D、writetext
4、关于算法的描述,以下选项中错误的是 ( B )
A、算法是指解题方案的准确而完整的描述
B、算法的复杂度主要包括时间复杂度和数据复杂度
C、算法具有可行性、确定性、有穷性的基本特征
D、算法的基本要素包括数据对象的运算和操作及算法的控制结构
解释:算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。
5、.关于Python的lambda函数,以下选项中描述错误的是 ( B )
A、 lambda函数将函数名作为函数结果返回
B、f = lambda x,y:x+y 执行后,f的类型为数字类型
C、lambda用于定义简单的、能够在一行内表示的函数
D、可以使用lambda函数定义列表的排序原则
6、基本的Python内置函数eval(x)的作用是 ( B )
A、 将x转换成浮点数
B、去掉字符串x最外侧引号,当作Python表达式评估返回其值
C、计算字符串x作为Python语句的值
D、 将整数x转换为十六进制字符串
二、填空题
1、 在Python中____表示空类型。(None)
2、 查看变量类型的Python内置函数是______。(type())
3、list(map(str, [1, 2, 3]))的执行结果为___________。([‘1’, ‘2’, ‘3’])
4、 Python标准库math中用来计算平方根的函数是____。(sqrt)
5、 假设有列表a = [‘name’, ‘age’, ‘sex’]和b = [‘Dong’, 38, ‘Male’],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为___________。(c = dict(zip(a, b)))
三、简答题
1、简单解释Python基于值的自动内存管理方式?
----Python采用的是基于值得内存管理方式,在Python中可以为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一个内存地址;Python具有自动内存管理功能,会自动跟踪内存中所有的值,对于没有任何变量指向的值,Python自动将其删除。
2、异常和错误有什么区别?
----异常是指因为程序执行过程中出错而在正常控制流以外采取的行为。严格来说,语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而访问不存在的对象,或者试图访问不存在的文件,等等。
3、请用自己的算法, 按升序合并如下两个list, 并去除重复的元素:
list1 = [2, 3, 7, 4, 9, 5, 6,18]
list2 = [5, 6, 10, 17, 3, 2,1]
----先转换成集合自动去重,再转换成列表
list1=[2, 3, 7, 4, 9, 5, 6,18]
list2=[5, 6, 10, 17, 3, 2,1]
list3=list(set(list1+list2))
4、求结果
def num():
return [lambda x: i*x for i in range(4)]
print([m(2) for m in num()])
答案:[6, 6, 6, 6]
5、如何生成一个随机数?
import random
def rdm(n):
lis = []
for i in range(n):
n = random.randint(1,9)
lis.append(str(n))
s = ''.join(lis)
return int(s)
这套题就到这里,同学们做的怎么样啊,如果是毫无压力,那估计你这个学期学的python还阔以了,如果有点难度,那就要仔细看看了,因为这套题很基础,看哪没有学明白,好好看看那一部分的内容,自己复习不进去,也可以来小猿圈看看,把自己的弱项重新听听课,准备迎接期末考试吧,希望大家考的都会,蒙的全对,加油啦!
PYTHON定义函数简单问题?
python函数简单题你这个def addInterest(balance,rate):
函数并没有把结果return 回去
函数中的局部变量的变化不会影响到python函数简单题你的amount的
所以打印的还是amount原始赋值。
急求大神帮忙做一道python题,真的超级超级简单!!!
def fun(n):
L1=[1/((x+1)*(x+2)) for x in range(0,n,2)]
L2=[-1/((x+1)*(x+2)) for x in range(1,n,2)]
return sum(L1)+sum(L2)
def main():
n=int(input("请输入n的值"))
print("sum=",fun(n))
main()
一道简单的python编程题?
按照题目要求编写的哥德巴赫猜想的Python程序如下
def IsPrime(v):
if v=2:
for i in range(2,v//2+1):
if v%i==0:
return False
else:
return True
else:
return False
n=int(input("输入一个正偶数:"))
if n2 and n%2==0:
for i in range(1,n//2+1):
if IsPrime(i)==True and IsPrime(n-i)==True:
print("%d=%d+%d" %(n,i,n-i))
else:
print("输入数据出错!")
源代码(注意源代码的缩进)
关于python函数简单题和python基础题库及答案的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。