python 基础练习题

合集下载

python基础练习题30道

python基础练习题30道

python基础练习题30道1、执⾏python脚本的两种⽅式答:1>可以在python /home/xxxx.py2>cd /home ./xxxx.py 因为py脚本⾥⾯指定了python解释器的位置2、简述位、字节的关系答:1Byte(字节)=8bit(⼆进制位)3、简述ascii、unicode、uft-8、gbk的关系答:ascii 英⽂编码,8个⼆进制位代表⼀个字母,总共可以有2的8次⽅减去1个等于255个gbk是中⽂编码,是⽤的16个⼆进制代表⼀个汉字,有点浪费空间uft-8也是中⽂编码,也是⽤的16个⼆进制代表⼀个汉字,但是能⽤8位表⽰就⽤位了4、请写出“李杰”分别⽤utf-8的gbk编码所占的位数6 45、python单⾏注释和多⾏注释分别⽤什么?答:单⾏注释⽤# 多⾏注释⽤""" """6、声明变量注意事项有哪些?答:变量 = "abc" 变量空格 = 空格双引号之间的字符就是变量,在调⽤的时候要⽤吧变量⽤括号括起来()变量,只能由字母、数字、下划线组成特例:不能以数字开头python的关键字也不能使⽤7、如有以下变量n1 = 5,请使⽤int提供的⽅法,得到该变量最少可以⽤多少个⼆进制位表⽰答:n1 = 5v = n1.bit_length()print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py38、布尔值分别有什么?答:True False9、阅读代码,请写出执⾏结果a = "gouguoqi"b = a.capitalize()print (a)print (b)结果是gouguoqiGouguoqi10、写代码,有如下变量,请按照要求实现每个功能a.移除name变量对应值的两边的空格,并输出移除后的内容name = " gouguoQ"v = name.strip()print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py gouguoQb.判断name变量对应的值是否以"go"开头,并输出结果name = " gouguoQ"v = name.startswith('go')print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py Falsec.判断name变量对应的值是否以"Q"结尾,并输出结果name = " gouguoQ"v = name.endswith('Q')print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py Trued.将name变量对应的值中的"o",替换为"p",并输出结果name = " gouguoQ"v = name.replace('g','p')print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py poupuoQe.将name变量对应的值根据"o"分割,并输出结果name = " gouguoQ"v = name.split('o')print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py [' g', 'ugu', 'Q']f.请问上⼀题分割之后得到的值是什么类型(可选)列表g.将name变量对应的值变⼤写,并输出结果name = " gouguoQ"v = name.upper()print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py GOUGUOQh.将name变量对应的值变成⼩写,并输出结果name = " gouguoQ"v = name.lower()print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py gouguoqi.请输出name变量对应的值的第⼆个字符?name = " gouguoQ"v = name[2]print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py oj.请输出name变量对应的值的前三个字符name = " gouguoQ"v = name[0:3]print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.pygoh.请输出name变量对应值的后2个字符name = " gouguoQ"v = name[-2:]print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.pyoQl.请输出name变量中的值"Q的索引的位置name = " gouguoQ"v = len(name)for n in range(v):if (name[n]) != "Q":continueelse:print (n,name[n])C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py7 Qm.获取⼦序列,仅不包含最后⼀个字符,如:woaini则获取woain root则获取roo name = " gouguoQ"print (name[0:-1])C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.pygouguo21、字符串是否可以迭代对象?如果可以请使⽤for循环每⼀个元素?for n in"woaini":print (n)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py woaini只要能被for循环,这个值就是可迭代对象#类,类型str各种⽅法......#对象,根据str类型创建⼀个对象,S1,在shell我们就叫变量S1 = "gouguoqi"22、请⽤代码实现a.利⽤下划线将列表的每⼀个元素拼接成字符串 li = "gouguoqi"li = "gouguoqi"v = "_".join(li)print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py g_o_u_g_u_o_q_ib.利⽤下划线将列表的每⼀个元素拼接成字符串 li = ['gou','guo','qi'] li = ['gou','guo','qi']v = "_".join(li)print (v)C:\python35\python3.exe D:/pyproject/day11数据类型的⽅法/str-way.py gou_guo_qi23、在python2和3中range有啥区别在python2.7⾥⾯,range可以直接帮我们打印出来范围内的数字,这个就有缺点了,⽐如我打印出来1万个数字,它得先把⼀万个数字打印出来,这个时候我们得等着了。

python基础测试题

python基础测试题

python基础测试题一、选择题1、以下哪个是 Python 中的合法变量名?()A 123varB var 123C my_varD @var答案:C解析:在 Python 中,变量名只能包含字母、数字和下划线,且不能以数字开头。

选项 A 以数字开头,选项 B 中间有空格,选项 D 以特殊字符@开头,都不符合变量名的规则,只有选项 C 是合法的变量名。

2、以下代码的输出结果是什么?()```pythonx = 5y = 2print(x // y)```B 2C 3D 7答案:B解析:在Python 中,`//`是整除运算符,返回商的整数部分。

5 除以 2 的商为 25,取整数部分为 2,所以输出结果是 2。

3、以下哪个方法可以将字符串转换为整数?()A `str()`B `int()`C `float()`D `complex()`答案:B解析:`int()`函数用于将一个数字或字符串转换为整数。

`str()`函数将对象转换为字符串,`float()`函数将对象转换为浮点数,`complex()`函数用于创建复数。

4、以下哪个是 Python 中用于创建列表的符号?()A `{}`B `()`D `<>`答案:C解析:在 Python 中,使用方括号``来创建列表。

花括号`{}`用于创建字典,小括号`()`用于创建元组等。

5、以下代码的输出结果是什么?()```pythonmy_list = 1, 2, 3, 4, 5print(my_list1:4)```A `2, 3, 4`B `1, 2, 3`C `2, 3, 4, 5`D `1, 2, 3, 4`答案:A解析:列表的切片操作`start:end` 会返回从索引`start` (包含)到索引`end` (不包含)的子列表。

在这个例子中,`my_list1:4` 会返回索引 1 到索引 3 的元素,即`2, 3, 4` 。

二、填空题1、 Python 中的注释可以使用_____(单行注释)和_____(多行注释)。

python基础试题

python基础试题

python基础试题一、选择题1. 在Python中,用于表示字符串的变量类型是:A. intB. floatC. strD. list2. 下列哪个选项是Python的内置数据类型?A. StackB. ArrayC. TupleD. Graph3. 在Python中,如何正确定义一个函数?A. def my_function():B. function my_function():C. MyFunction = function()D. _my_function()4. 下列哪个是Python的循环结构?A. forB. nextC. do-whileD. switch-case5. 在Python中,如何实现从1加到100的累加和?A. sum(1, 100)B. sum = 0; for i in range(1, 101): sum += iC. addUp(1, 100)D. 1.to(100).sum()二、填空题1. 在Python中,可以使用 ______ 来创建一个新的列表,例如:`[1, 2, 3]`。

2. 如果想要在Python中导入模块,需要使用 ______ 语句。

3. 在Python中,可以使用 ______ 语句来实现条件判断。

4. 对于字符串“Hello, World!”,如果想要截取从第7个字符开始到结束的所有字符,可以使用 ______ 切片操作。

5. 在Python中,定义一个名为`my_dict`的字典,其键为`'name'`,值为`'Kimi'`,应使用 ______ 语法。

三、判断题1. 在Python中,每个语句的结束都需要使用分号(`;`)。

()2. Python是一种静态类型语言。

()3. 使用`print`函数可以在Python中输出信息到控制台。

()4. 在Python中,可以使用`len`函数来获取一个列表的长度。

Python基础训练100题

Python基础训练100题

Python3基础训练100题文章目录实例001:数字组合实例002:“个税计算”实例003:完全平方数实例004:这天第几天实例005:三数排序实例006:斐波那契数列实例007:copy实例008:九九乘法表实例009:暂停一秒输出实例010:给人看的时间实例011:养兔子实例012:100到200的素数实例013:所有水仙花数实例014:分解质因数实例015:分数归档实例016:输出日期实例017:字符串构成实例018:复读机相加实例019:完数实例020:高空抛物实例021:猴子偷桃实例022:比赛对手实例023:画菱形实例024:斐波那契数列II实例025:阶乘求和实例026:递归求阶乘实例027:递归输出实例028:递归求等差数列实例029:反向输出实例030:回文数实例031:字母识词实例032:反向输出II实例033:列表转字符串实例034:调用函数实例035:设置输出颜色实例036:算素数实例037:排序实例038:矩阵对角线之和实例039:有序列表插入元素实例040:逆序列表实例041:类的方法与变量实例042:变量作用域实例043:作用域、类的方法与变量实例044:矩阵相加实例045:求和实例046:打破循环实例047:函数交换变量实例048:数字比大小实例049:lambda实例050:随机数实例051:按位与实例052:按位或实例053:按位异或实例054:位取反、位移动实例055:按位取反实例056:画圈实例057:画线实例058:画矩形实例059:画图(丑)实例060:字符串长度实例061:杨辉三角实例062:查找字符串实例063:画椭圆实例064:画椭圆、矩形实例065:画组合图形实例066:三数排序实例067:交换位置实例068:旋转数列实例069:报数实例070:字符串长度II实例071:输入和输出实例072:创建链表实例073:反向输出链表实例074:列表排序、连接实例075:不知所云实例076:做函数实例077:遍历列表实例078:字典实例079:字符串排序实例080:猴子分桃实例081:求未知数实例082:八进制转十进制实例083:制作奇数实例084:连接字符串实例085:整除实例086:连接字符串II实例087:访问类成员实例088:打印星号实例089:解码实例090:列表详解实例091:time模块实例092:time模块II实例093:time模块III实例094:time模块IV实例095:转换时间格式实例096:计算复读次数实例097:磁盘写入实例098:磁盘写入II实例099:磁盘读写实例100:列表转字典实例001:数字组合题目有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?程序分析遍历全部可能,把有重复的剃掉。

python基础能力测试习题(带答案详解)

python基础能力测试习题(带答案详解)

Python 能力测试题一、选择题1.运行下列程序后,输入了一个数字“100”,并按下Enter 键。

下列说法正确的是( ) 1.a = input("请输入任意内容:") 2.if a == '100':3. print ("你输入的是",a)A 、程序不能运行,出现错误提示信息B 、程序能够运行,没有任何错误信息C 、程序不能运行,出现乱码信息D 、程序能够运行,输出“你输入的是:100”2.下述while 循环体执行的次为( )1.k = 100 2.while k > 1: 3.k= k // 3 A 、6 B 、5 C 、4 D 、33.运行下列程序后,程序输出的结果是( ) 1.sum = 0 2.n = 3 3.for i in range(2, 4): 4.n *= 2 5.sum += n 6.print (sum) A 、9 B 、18 C 、21 D 、364.初始时列表L=[10,13,15,12,14,11],列表中的元素经过一系列位置交换后,最大的元素移动到了列表尾部,位置交换后L=[10,13,12,14,11,15],下述能实现这个功能的代码是( )。

5 5、若元组 y=(‘A ’,‘B ’, ‘C ’, ‘D ’),则能够返回元素‘D ’的语句是( )。

A 、y[0]B 、y[3]C 、y[-2]D 、y[4]6、以下程序的最终打印结果( )。

l = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ,9 ]print ( l [1 : 4] )A 、[1,2,3]B 、[1,2,3,4]C 、[2,3,4]D 、[2,3]A 、for i in range(6):if L[i] < L[i -1]:L[i],L[i -1] = L[i -1],L[i]B 、for i in range(5): if L[i] < L[i -1]: L[i],L[i -1] = L[i -1],L[i]C 、for i in range(6):if L[i] > L[i+1]:L[i],L[i+1] = L[i+1],L[i] D 、for i in range(5): if L[i] > L[i -1]: L[i],L[i+1] = L[i+1],L[i]7、初始时x = 3,x // 2+x**2 运算后的值为()A、7.5B、10C、8D、10.58、下面程序的作用是()。

大学python基础试题及答案

大学python基础试题及答案

大学python基础试题及答案一、选择题(每题2分,共20分)1. 在Python中,以下哪个关键字用于定义一个函数?A. defB. classC. returnD. import答案:A2. 下列哪个选项是Python中的注释方式?A. // 这是注释B. # 这是注释C. /* 这是注释 */D. -- 这是注释答案:B3. 以下哪个选项是Python中的列表推导式?A. [x for x in range(10)]B. {x for x in range(10)}C. (x for x in range(10))D. [x: x in range(10)]答案:A4. Python中,以下哪个选项是正确的字典定义方式?A. dict = {1: 'apple', 2: 'banana'}B. dict = [1: 'apple', 2: 'banana']C. dict = (1: 'apple', 2: 'banana')D. dict = {'1': 'apple', '2': 'banana'}答案:A5. 在Python中,以下哪个选项是正确的字符串格式化方式?A. "Hello %s" % "world"B. "Hello {}".format("world")C. "Hello {0}".format("world")D. "Hello %d" % "world"答案:C二、填空题(每题2分,共20分)1. Python中的整数类型是________。

答案:int2. 在Python中,以下代码的输出结果是________。

python基础练习题

python基础练习题

Python基础练习题一、变量与数据类型1. 将字符串 "Hello, World!" 赋值给一个变量,并打印该变量。

2. 定义一个整型变量和一个浮点型变量,分别计算它们的和、差、乘积和商。

4. 编写代码,实现整型、浮点型、字符串型之间的类型转换。

二、运算符与表达式1. 计算 9 + 6 3 2 的结果。

3. 编写一个表达式,判断一个数是否既是偶数又是3的倍数。

4. 使用除法运算符,计算 15 除以 2 的结果,并解释为何得到这样的结果。

5. 编写一个表达式,计算两个数的平均值。

三、流程控制1. 编写一个if语句,判断一个数是否大于10,如果是,则打印“该数大于10”。

2. 编写一个for循环,打印1到10的所有偶数。

3. 使用while循环,计算1+2+3++100的和。

5. 编写一个函数,判断一个年份是否为闰年。

四、列表与元组1. 创建一个包含1到10的列表。

2. 将列表中的每个元素乘以2,并打印结果。

3. 编写代码,实现列表的排序和反转。

4. 使用切片操作,获取列表中的第3到第6个元素。

5. 编写一个函数,计算列表中所有偶数的和。

五、字典与集合1. 创建一个包含三个键值对的字典,分别表示姓名、年龄和性别。

2. 通过键访问字典中的值,并修改其中一个键的值。

3. 编写代码,遍历字典中的所有键和值。

4. 创建一个集合,包含1到10的数字,并去除重复元素。

5. 编写一个函数,判断两个集合是否为子集关系。

六、函数与模块1. 编写一个函数,计算两个数的最大公约数。

2. 定义一个斐波那契数列的函数,并打印前10个数字。

3. 导入math模块,计算并打印圆周率的值。

4. 编写一个装饰器,用于计算函数运行时间。

5. 创建一个模块,实现一个简单的计算器功能(加、减、乘、除)。

七、文件操作1. 编写代码,读取一个文本文件的内容,并打印出来。

2. 将一段文字写入一个文本文件,并实现换行。

3. 编写代码,复制一个文件到另一个目录。

Python初学者15道必练题及参考答案

Python初学者15道必练题及参考答案

Python初学者15道必练题
典型、快捷、有效的练习题
可新科技 | Python培训 | 2021
1: 已知两个整数,编写一段函数,返回它们的乘积,如果结果大于1000,则返回两个数的和。

已知:
2 已知0到9共十个数,编写一个从0开始到9结束的循环,在每一步打印当前数与上一个数的和。

预期返回结果:
5: 已知一个数列,如果数列的首尾数字相同,则返回真。

预期返回结果
6: 已知一个数列,编写一个循环,只打印可以被五整除的数。

预期输出结果:
7: 编写一段函数,返回“Emma”这个单词在一个句子中的出现次数。

输入的句子是“Emma is good developer. Emma is a writer”
期望输出结果为:
参考答案2: 不使用任何字符串函数
8: 编写函数,打印如下的数字组合。

9: 前后颠倒一个已知数,如果其结果与原来的数相同,则返回“此数为回文数”,否则返回“不是回文数”。

期望输出结果:
10: 输入两个数列,编写一个函数,将其合成一个数列,条件是:新数列只收录第一数列里的奇数,及第二个数列里的偶数,返回新的数列。

期望输出的结果:
11: 编写一段代码,从一个整数中间反序提取每一个数字。

期望输出结果:
比如, 如果一个整数是7536, 输出结果应该是“6 3 5 7“,数字之间用空格分开。

参考答案:
12: 已知输入的薪水,根据如下的阶梯所得税规定,计算个人所得税。

13: 打印1到10的乘法口诀表期望输出结果:
参考答案:
14: 打印由“*“字符组成的半个倒金字塔图案。

参考答案:。

14道Python基础练习题(附答案)

14道Python基础练习题(附答案)

14道Python基础练习题(附答案)1. 输⼊⼀个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

要求:⽤if语句实现;输⼊百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

代码:a=eval(input('请输⼊成绩:'))if a<0 or a>100 or a%1!=0:print('您输⼊的成绩不合理,请检查后重新输⼊')elif 90<=a<=100:print('成绩等级:A')elif 80<=a<=89:print('成绩等级:B')elif 70<=a<=79:print('成绩等级:C')elif 60<=a<=69:print('成绩等级:D')else:print('成绩等级:E')输出:2. 篮球⽐赛是⾼分的⽐赛,领先优势可能很快被反超。

作为观众,希望能在球赛即将结束时,就提早知道领先是否不可超越。

体育作家Bill James发明了⼀种算法,⽤于判断领先是否“安全”。

算法描述:获取领先的分数,减去3分;如果⽬前是领先队控球,则加0.5;否则减0.5(数字⼩于0则变成0);计算平⽅后的结果;如果得到的结果⽐当前⽐赛剩余时间的秒数⼤,则领先是“安全”的。

请编写程序实现上述算法的功能,并给出运⾏结果。

代码:#Python学习交流群:725638078grade=eval(input('请输⼊领先分数:'))time=eval(input('请输⼊剩余时间:'))t=grade-3w=input('⽬前是否为领先队控球(Y or N):')if w == 'Y' or w == 'y':g=(t+0.5)**2else:g=t-0.5if g<=0:g=0g=g**2if g>time:print('领先是“安全”的')else:print('领先是“不安全”的')输出:3.根据y=1+3-1+3-1+……+(2n-1)-1,求:y<3时的最⼤n值。

Python基础教程-习题(含答案)

Python基础教程-习题(含答案)

Python基础教程习题(含答案)第一章一、判断题1、Python是一种跨平台、开源、免费的高级动态编程语言。

(对)2、Python 3.x完全兼容Python 2.x。

(错)3、在Windows平台上编写的Python程序无法在Unix平台运行。

(错)4、不可以在同一台计算机上安装多个Python版本。

(错)5、pip命令也支持扩展名为.whl的文件直接安装Python扩展库。

(对)二、填空题1、Python安装扩展库常用的是_______工具。

(pip)2、在IDLE交互模式中浏览上一条语句的快捷键是__________。

(Alt+P)3、Python程序文件扩展名主要有__________和________两种,其中后者常用于GUI 程序。

(py、pyw)4、Python源代码程序编译后的文件扩展名为_________。

(pyc)5、使用pip工具升级科学计算扩展库Numpy的完整命令是______________。

(pip install --upgrade Numpy)6、使用pip工具安装科学计算扩展库Numpy的完整命令是___________。

(pip install Numpy)7、使用pip工具查看当前已安装的Python扩展库的完整命令是__________。

(pip list)8、现有一python文件为“Stu.py”,ico文件为“Stu.ico”,两者均在同一目录下,现要将Stu.py打包发布在此目录下,所发布的文件图标采用Stu.ico,需要使用的命令是_____________。

(pyinstaller –I Stu.ico –F Stu.py)第二章一、判断题1、已知 x = 3,那么赋值语句 x = 'abcedfg' 是无法正常执行的。

(错)2、Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型。

(错)3、Python采用的是基于值得自动内存管理方式。

【编程】python基础试题(含答案)练习

【编程】python基础试题(含答案)练习

1.下列有关于 print 命令的描述中,正确的是( )A .在打印机里打印相关的文本或者数字等B .可以用来画图C .在屏幕中输出相应的文本或者数字等D .执行语句 print (“python”, 3.7)时会出错2.Python 中 print(66!=66)结果是 ( )。

A.1 B.0 C.True D. False3.数据分析的处理工具错误的( )A.Access B..Excel C.python D.SQL4.在教科书中利用 Python 探究电流和电压、电阻的关系实验里,除了可以通过书中的 Jupyter Notebook 外,处理数据还可以通过下列( )工具实现。

A. Python IDLE B.Xmind C .网络画板 D .几何画板5.下列选项都是属于高级语言的是 ( )A.汇编语言、机器语言B .汇编语言、 Basic 语言C.Basic 语言、 Python 语言D .机器语言、 Python 语言6.关于 python 程序设计语言,下列说法错误的是( )A.python 是一种面向对象的编程语言 B.python 代码只能在交互环境中运行C.python 具有丰富和强大的库 D.python 是一种解释型的计算机程序设计高级语言7.利用 Word 软件编辑了一篇关于“ Python简介”的文档,部分界面如图所示,下列说法正确的是( )A .该文档中的有 2 个用户添加了 2 处批注B .该文档中图片采用的环绕方式为上下型C.该文档中总共有 4 处修订D .若要对文档中所有的“Python”文字设置为“红色倾斜”格式,用自动更正功能最合适8.下列选项中,不属于 Python 合法变量名的是( )A.int32 B.40xl C.self D._name_9.利用 Python 求 100 以内所有能被 3 整除的正整数,代码如下:则下列程序第 3 行的横线应该填 ( )A.i=i*3 B.i=i%3 C.i%3==0 D.i/3==110.下列不是 Python 程序基本结构的是()。

试题python基础试题(含答案)练习

试题python基础试题(含答案)练习

试题python基础试题(含答案)练习一、选择题1.下列选项中,能作为python程序变量名的是()A.s%1 B.3stu C.while D.dist2.下列不属于...高级编程语言的是A.C 语言B.VB语言C.Python语言D.机器语言3.Python输入函数为()。

A.time() B.round() C.input( ) D.print()4.在Python中print(-14//4)的运行结果是()。

A.-4 B.-3.5 C.2 D.-25.下列选项中,可以作为 Python程序变量名的是()A.a/b B.ab C.a+b D.a-b6.在Python中,表达式2**3的结果是()A.5 B.8 C.6 D.37.除python语言之处,还有很多其他程序设计语言。

程序设计语言经历了从机器语言、汇编语言到高级语言的发展过程。

其中python语言是属于()。

A.机器语言B.高级语言C.汇编语言D.自然语言8.在Python中,表达式(21%4)+5的值是()A.2 B.6 C.10 D.39.我们学习了使用Python程序设计语言解决问题,Python程序设计语言属于()。

A.高级语言B.自然语言C.汇编语言D.机器语言10.在python中,运行以下程序,结果应为()a=5b=7b+=3a=b*20a+=2a=a%bprint(a,b)A.5 7 B.20 10 C.22 7 D.2 1011.下列选项中,不属于Python特点的是()。

A.面向对象B.运行效率高C.可读性好D.开源12.下列软件中,可作为服务器操作系统的是()A.Windows B.Python C.excel D.access13.在python中,运行下列程序,正确的结果是()x=1while x>0:x=x+1print( x)A.1 B.1 2 3 4 5 6 7 8 9…………………C.无输出D.10014.在python中,以下哪个选项a 的数据类型为整型()A.a=5 B.a=input() C.a='5' D.a=5.015.运行下列Python程序,输出结果为0,则空白处应为()a=14b=7c=_______print(c)A.a-b B.a+b C.a/b D.a%b16.已知字符串a="python",则a[ 1 : 3 ]的值为()A."pyth" B."pyt" C."py" D."yt"17.下列选项中,可作为Python变量名的是()A.int B.Abc C.float D.Complex18.运行下列 Python程序,结果正确的是( )a=32b=14c=a%bprint(c)A.2 B.4 C.32 D.1419.Python语句 "ab"+"c"*2 的运行结果是()A.abc2 B.abcabc C.abcc D.ababcc20.在Python中,实现多分支选择结构的较好方法是()。

python基础练习题(输入三个整数x,y,z,请把这三个数由小到大输出)

python基础练习题(输入三个整数x,y,z,请把这三个数由小到大输出)

python基础练习题(输⼊三个整数x,y,z,请把这三个数由⼩到⼤输出)day3---------------------------------------------------------------实例005:三数排序题⽬:输⼊三个整数x,y,z,请把这三个数由⼩到⼤输出。

分析:很常见的排序,不直接调排序函数的话,可以多写⼏个if,但是⾃⼰不满⾜,试试冒泡排序,还好写出来了1 list = []2for i in range(1,6):3 list.append(int(input(f"请输⼊第{i}个数:")))4for j in range(0,len(list)):5 k = 06while k<=(len(list)-j-2):7if list[k] >list[k+1]:8 list[k+1],list[k] = list[k],list[k+1]9 k+=110print(list)个⼈还⽐较满意,哈哈哈,看看标准答案:1 raw = []2for i in range(3):3 x = int(input('int%d: ' % (i)))4 raw.append(x)56for i in range(len(raw)):7for j in range(i, len(raw)):8if raw[i] > raw[j]:9 raw[i], raw[j] = raw[j], raw[i]10print(raw)感觉原理差不多,不过标准答案⽐我的易读⼀点,相对来说少两⾏,把raw[i]看成是较⼤的数,然后依次⽐较。

最后上个调⽤函数的:1 raw2=[]2for i in range(3):3 x=int(input('int%d: '%(i)))4 raw2.append(x)5print(sorted(raw2))这直接砍掉⼀半的代码,编写的效率确实⾼,sorted(raw2)可直接对列表排序,也可直接调⽤raw2.sort()⽅法,需要注意的是raw2.sort()⽅法会改变原列表,⽽sorted()是重新⽣成列表,不改变原列表,所以看情况使⽤。

python基础题目练习(附答案)

python基础题目练习(附答案)

答案:答案:D答案:B【程序填空】---------------------------------------------------------题目:甲乙丙丁4人同时开始放鞭炮,甲每隔t1 s放一次,乙每隔t2 s放一次,丙每隔t3 s放一次,丁每隔t4 s放一次,每人各放n次。

函数fun的功能是根据形参炸响,只算一次响声,第一次响声是在第0s。

例如:若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。

---------------------------------------------------------注意:除要求填空的位置之外,请勿改动程序中的其他内容。

------------------------------------------------------'''def OK(i, t, n):#**********SPACE**********return (i%t==0) and (i//t<n)def fun(t1, t2, t3, t4, n):#**********SPACE**********maxt=t1if maxt < t2:maxt = t2if maxt < t3:maxt = t3if maxt < t4:maxt = t4count=1#**********SPACE**********for t in range(1, maxt*(n-1)):if OK(t, t1, n) or OK(t, t2, n)or OK(t, t3, n) or OK(t, t4, n):count+=1#**********SPACE**********return countdef main():t1=7t2=5t3=6t4=4n=10r = fun(t1, t2, t3, t4, n)print("总共可听到%d次鞭炮声\n" %r)if __name__ == '__main__':main()'''------------------------------------------------------【程序填空】---------------------------------------------------------题目:求0-7所能组成的奇数个数。

Python基础练习题50道(附答案)

Python基础练习题50道(附答案)

**问题1:Hello,World!**print("Hello,World!")**问题2:计算两个数字的和**num1=5num2=3sum=num1+num2print("和为:",sum)**问题3:判断奇偶数**num=int(input("请输入一个整数:"))if num%2==0:print(num,"是偶数")else:print(num,"是奇数")**问题4:计算平方和立方**num=int(input("请输入一个整数:"))square=num**2cube=num**3print(f"{num}的平方是{square},立方是{cube}") **问题5:计算斐波那契数列**def fibonacci(n):if n<=1:return nelse:return fibonacci(n-1)+fibonacci(n-2)n=int(input("请输入斐波那契数列的项数:"))for i in range(n):print(fibonacci(i),end="")**问题6:计算阶乘**def factorial(n):if n==0:return1else:return n*factorial(n-1)num=int(input("请输入一个整数:")) print(f"{num}的阶乘是{factorial(num)}")**问题7:检查质数**def is_prime(n):if n<=1:return Falsefor i in range(2,int(n**0.5)+1):if n%i==0:return Falsereturn Truenum=int(input("请输入一个整数:"))if is_prime(num):print(f"{num}是质数")else:print(f"{num}不是质数")**问题8:反转字符串**def reverse_string(s):return s[::-1]string=input("请输入一个字符串:") reversed_string=reverse_string(string) print(f"反转后的字符串:{reversed_string}")**问题9:统计字符数**text=input("请输入一段文本:")char_count=len(text)print(f"文本中的字符数:{char_count}")**问题10:计算平均值**numbers=[5,10,15,20,25]average=sum(numbers)/len(numbers) print(f"平均值为:{average}")**问题11:检查回文字符串**def is_palindrome(s):s=s.lower()s=s.replace("","")return s==s[::-1]string=input("请输入一个字符串:")if is_palindrome(string):print("是回文字符串")else:print("不是回文字符串")**问题12:计算阶乘的和**def factorial(n):if n==0:return1else:return n*factorial(n-1)n=int(input("请输入一个整数:"))sum_factorial=sum(factorial(i)for i in range(1,n+1))print(f"前{n}个整数的阶乘之和:{sum_factorial}")**问题13:判断闰年**def is_leap_year(year):if(year%4==0and year%100!=0)or(year%400==0): return Trueelse:return Falseyear=int(input("请输入一个年份:"))if is_leap_year(year):print(f"{year}是闰年")else:print(f"{year}不是闰年")**问题14:打印九九乘法表**for i in range(1,10):for j in range(1,i+1):print(f"{j}x{i}={i*j}\t",end="")print()**问题15:找出最大数**numbers=[5,10,2,8,15,3]max_num=max(numbers)print(f"最大数是:{max_num}")**问题16:找出最小数**numbers=[5,10,2,8,15,3]min_num=min(numbers)print(f"最小数是:{min_num}")**问题17:计算字符串长度**text="Hello,World!"length=len(text)print(f"字符串的长度是:{length}")**问题18:检查回文数**def is_palindrome(num):original_num=numreverse_num=0while num>0:remainder=num%10reverse_num=reverse_num*10+remaindernum=num//10return original_num==reverse_numnum=int(input("请输入一个整数:"))if is_palindrome(num):print(f"{num}是回文数")else:print(f"{num}不是回文数")**问题19:生成随机数**import randomrandom_num=random.randint(1,100)print(f"随机数:{random_num}")**问题20:计算列表平均值**numbers=[5,10,15,20,25]average=sum(numbers)/len(numbers)print(f"列表的平均值:{average}")**问题21:翻转列表**my_list=[1,2,3,4,5]reversed_list=my_list[::-1]print(f"翻转后的列表:{reversed_list}")**问题22:查找列表中的重复元素**def find_duplicates(lst):duplicates=[]for item in lst:if lst.count(item)>1and item not in duplicates:duplicates.append(item)return duplicatesmy_list=[1,2,2,3,4,4,5]duplicate_elements=find_duplicates(my_list)print(f"重复元素:{duplicate_elements}")**问题23:判断字符串是否包含唯一字符**def has_unique_chars(s):return len(s)==len(set(s))string=input("请输入一个字符串:")if has_unique_chars(string):print("字符串包含唯一字符")else:print("字符串不包含唯一字符")**问题24:检查列表是否升序排列**def is_sorted(lst):return lst==sorted(lst)my_list=[1,2,3,4,5]if is_sorted(my_list):print("列表是升序排列的")else:print("列表不是升序排列的")**问题25:找出两个列表的公共元素**def find_common_elements(list1,list2):common_elements=list(set(list1)&set(list2)) return common_elementslist1=[1,2,3,4,5]list2=[3,4,5,6,7]common=find_common_elements(list1,list2) print(f"公共元素:{common}")**问题26:计算列表中的元素之和**my_list=[1,2,3,4,5]sum_elements=sum(my_list)print(f"列表中元素之和:{sum_elements}")**问题27:检查字符串是否是回文排列**def is_palindrome_permutation(s):s=s.replace("","").lower()char_count={}for char in s:if char in char_count:char_count[char]+=1else:char_count[char]=1odd_count=0for count in char_count.values():if count%2!=0:odd_count+=1if odd_count>1:return Falsereturn Truestring=input("请输入一个字符串:")if is_palindrome_permutation(string):print("可以通过重新排列成回文")else:print("不能通过重新排列成回文")**问题28:计算两个矩阵的和**def add_matrices(matrix1,matrix2):result=[]for i in range(len(matrix1)):row=[]for j in range(len(matrix1[0]):row.append(matrix1[i][j]+matrix2[i][j])result.append(row)return resultmatrix1=[[1,2,3],[4,5,6]]matrix2=[[7,8,9],[10,11,12]]result=add_matrices(matrix1,matrix2)for row in result:print(row)**问题29:查找最大公共前缀**def common_prefix(strings):if not strings:return""prefix=strings[0]for string in strings[1:]:i=0while i<min(len(prefix),len(string))and prefix[i]==string[i]: i+=1prefix=prefix[:i]return prefixstr_list=["flower","flour","flow"]prefix=common_prefix(str_list)print(f"最大公共前缀:{prefix}")**问题30:判断是否为回文链表**class ListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdef is_palindrome(head):values=[]while head:values.append(head.val)head=head.nextreturn values==values[::-1]#创建链表node1=ListNode(1)node2=ListNode(2)node3=ListNode(2)node4=ListNode(1)node1.next=node2node2.next=node3node3.next=node4if is_palindrome(node1):print("是回文链表")else:print("不是回文链表")**问题31:合并两个有序链表** class ListNode:def__init__(self,val=0,next=None): self.val=valself.next=nextdef merge_two_lists(l1,l2):dummy=ListNode(0)current=dummywhile l1and l2:if l1.val<l2.val:current.next=l1l1=l1.nextelse:current.next=l2l2=l2.nextcurrent=current.nextif l1:current.next=l1elif l2:current.next=l2return dummy.next#创建两个有序链表list1=ListNode(1,ListNode(2,ListNode(4)))list2=ListNode(1,ListNode(3,ListNode(4)))result=merge_two_lists(list1,list2)while result:print(result.val,end="->")result=result.next**问题32:判断有效的括号**def is_valid_parentheses(s):stack=[]parentheses={')':'(','}':'{',']':'['}for char in s:if char in parentheses.values():stack.append(char)elif char in parentheses:if not stack or stack.pop()!=parentheses[char]:return Falsereturn not stackstring=input("请输入一个包含括号的字符串:")if is_valid_parentheses(string):print("有效的括号")else:print("无效的括号")**问题33:计算最大子序列和**def max_subarray_sum(nums):max_sum=current_sum=nums[0]for num in nums[1:]:current_sum=max(num,current_sum+num)max_sum=max(max_sum,current_sum)return max_sumnumbers=[-2,1,-3,4,-1,2,1,-5,4]max_sum=max_subarray_sum(numbers)print(f"最大子序列和为:{max_sum}")**问题34:查找两个整数之和等于给定目标值的索引** def two_sum(nums,target):num_dict={}for i,num in enumerate(nums):complement=target-numif complement in num_dict:return[num_dict[complement],i] num_dict[num]=ireturn Nonenums=[2,7,11,15]target=9result=two_sum(nums,target)print(f"索引:{result[0]},{result[1]}")**问题35:颠倒整数**def reverse_integer(x):if x<0:sign=-1x=-xelse:sign=1reversed_x=int(str(x)[::-1])if reversed_x>2**31-1:return0return sign*reversed_xnum=int(input("请输入一个整数:")) reversed_num=reverse_integer(num)print(f"颠倒后的整数:{reversed_num}")**问题36:移除重复元素**def remove_duplicates(nums):if not nums:return0i=0for j in range(1,len(nums)):if nums[j]!=nums[i]:i+=1nums[i]=nums[j]return i+1numbers=[1,1,2,2,2,3,4,5,5,5]new_length=remove_duplicates(numbers)print(f"新数组长度:{new_length}")**问题37:实现strStr()函数**def strStr(haystack,needle):if not needle:return0for i in range(len(haystack)-len(needle)+1): if haystack[i:i+len(needle)]==needle:return ireturn-1haystack="hello"needle="ll"index=strStr(haystack,needle)print(f"子串位置:{index}")**问题38:合并两个有序数组**def merge(nums1,m,nums2,n):i,j,k=m-1,n-1,m+n-1while i>=0and j>=0:if nums1[i]>nums2[j]:nums1[k]=nums1[i]i-=1else:nums1[k]=nums2[j]j-=1k-=1while j>=0:nums1[k]=nums2[j]j-=1k-=1nums1=[1,2,3,0,0,0]m=3nums2=[2,5,6]n=3merge(nums1,m,nums2,n)print(nums1)**问题39:找出缺失的正整数**def first_missing_positive(nums):nums_set=set(nums)i=1while i in nums_set:i+=1return inumbers=[3,4,-1,1]missing=first_missing_positive(numbers)print(f"缺失的正整数:{missing}")**问题40:旋转图像**def rotate(matrix):n=len(matrix)for i in range(n//2):for j in range(i,n-i-1):temp=matrix[i][j]matrix[i][j]=matrix[n-j-1][i]matrix[n-j-1][i]=matrix[n-i-1][n-j-1]matrix[n-i-1][n-j-1]=matrix[j][n-i-1]matrix[j][n-i-1]=tempmatrix=[[1,2,3],[4,5,6],[7,8,9]]rotate(matrix)for row in matrix:print(row)**问题41:找出只出现一次的元素**def single_number(nums):result=0for num in nums:result^=numreturn resultnumbers=[4,1,2,1,2]unique=single_number(numbers)print(f"只出现一次的元素:{unique}")**问题42:判断链表是否有环**class ListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdef has_cycle(head):slow=headfast=headwhile fast and fast.next:slow=slow.nextfast=fast.next.nextif slow==fast:return Truereturn False#创建一个有环的链表node1=ListNode(1)node2=ListNode(2)node3=ListNode(3)node1.next=node2node2.next=node3node3.next=node1if has_cycle(node1):print("链表有环")else:print("链表无环")**问题43:删除链表的倒数第N个节点** class ListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdef remove_nth_from_end(head,n):dummy=ListNode(0)dummy.next=headfirst=dummysecond=dummyfor i in range(n+1):first=first.nextwhile first:first=first.nextsecond=second.nextsecond.next=second.next.next#创建一个链表node1=ListNode(1)node2=ListNode(2)node3=ListNode(3)node4=ListNode(4)node5=ListNode(5)node1.next=node2node2.next=node3node3.next=node4node4.next=node5n=2remove_nth_from_end(node1,n) current=node1while current:print(current.val,end="->")current=current.next**问题44:合并K个升序链表**class ListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdef merge_k_sorted_lists(lists):from heapq import heappush,heappopmin_heap=[]dummy=ListNode()current=dummyfor i,l in enumerate(lists):if l:heappush(min_heap,(l.val,i)) while min_heap:val,i=heappop(min_heap)current.next=lists[i]current=current.nextlists[i]=lists[i].nextif lists[i]:heappush(min_heap,(lists[i].val,i)) return dummy.next#创建K个升序链表list1=ListNode(1,ListNode(4,ListNode(5)))list2=ListNode(1,ListNode(3,ListNode(4)))list3=ListNode(2,ListNode(6))lists=[list1,list2,list3]result=merge_k_sorted_lists(lists)while result:print(result.val,end="->")result=result.next**问题45:反转链表**class ListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdef reverse_linked_list(head):prev=Nonecurrent=headwhile current:next_node=current.nextcurrent.next=prevprev=currentcurrent=next_nodereturn prev#创建一个链表node1=ListNode(1)node2=ListNode(2)node3=ListNode(3)node4=ListNode(4)node5=ListNode(5)node1.next=node2node2.next=node3node3.next=node4node4.next=node5reversed_head=reverse_linked_list(node1) current=reversed_headwhile current:print(current.val,end="->")current=current.next**问题46:计算两数相除**def divide(dividend,divisor):MAX_INT=2**31-1MIN_INT=-2**31if dividend==0:return0if dividend==MIN_INT and divisor==-1:return MAX_INTsign=-1if(dividend<0)^(divisor<0)else1dividend,divisor=abs(dividend),abs(divisor) result=0while dividend>=divisor:temp,multiple=divisor,1while dividend>=(temp<<1):temp<<=1multiple<<=1dividend-=tempresult+=multiplereturn sign*resultdividend=10divisor=3result=divide(dividend,divisor)print(f"商:{result}")**问题47:找出最长连续递增序列**def find_length_of_lcis(nums):if not nums:return0max_length=1current_length=1for i in range(1,len(nums)):if nums[i]>nums[i-1]:current_length+=1max_length=max(max_length,current_length)else:current_length=1return max_lengthnumbers=[1,3,5,4,7]length=find_length_of_lcis(numbers)print(f"最长连续递增序列的长度:{length}")**问题48:计算字符串中的单词数**def count_words(s):words=s.split()return len(words)text="Hello,World!This is a sample text."word_count=count_words(text)print(f"单词数:{word_count}")**问题49:判断字符串是否是回文字符串II**def valid_palindrome(s):def is_palindrome(s,left,right):while left<right:if s[left]!=s[right]:return Falseleft+=1right-=1return Trueleft,right=0,len(s)-1while left<right:if s[left]!=s[right]:return is_palindrome(s,left+1,right)or is_palindrome(s,left,right-1) left+=1right-=1return Truestring="abca"if valid_palindrome(string):print("是回文字符串")else:print("不是回文字符串")**问题50:找出两个数组的交集** def intersection(nums1,nums2):set1=set(nums1)set2=set(nums2)return list(set1.intersection(set2)) nums1=[1,2,2,1]nums2=[2,2]result=intersection(nums1,nums2) print(f"交集:{result}")。

Python编程能力测试题(基础篇)

Python编程能力测试题(基础篇)

Python编程能力测试题一、单选题(共20题,每题2分)1.Python中input()函数的主要作用是()。

A.输入 B.输出 C.画图 D.运行2.在Python的代码编程环境下运行程序应点击()。

A.File菜单下的New File B.File菜单下的Save C.Run菜单下的Run Module D.Edit菜单下的Copy3.Python中的语句turtle.pensize(8),其功能是()。

A.设置画布的尺寸 B.设置画笔颜色C.设置画笔线条粗细 D.开始绘图4.Python中的语句turtle.circle(200),其功能是()。

A.设置画布的尺寸为200 B.海龟画笔前进200个像素C.画半径为200的圆 D.旋转200度5.运行以下Python程序,最后画出来的图形大致是()。

import turtleturtle.forward(200)turtle.left(90)turtle.forward(200)turtle.left(90)turtle.forward(200)turtle.left(90)turtle.forward(200)A. B. C. D.6.以下关于Python中变量的说法,错误的是()。

A.变量必须要命名。

B.变量第一次赋值为1,第二次赋值为4,那么最后变量的值为4。

C.变量只能用来存储数字,不能存储文字。

D.变量名区分大小写,同一个字母的大写和小写,被视为不同的变量。

7.Python中语句print(2*4)的执行结果是()。

A.0.5 B.6 C.8 D.1/28.下面哪个选项的变量中,装的内容是整数类型?()A.a = 2.5 B.b = int('90') C.c = '1 + 1' D.d = '-10' 9.Python中的“==”代表的是()。

A.把“==”左边的值赋值给右边。

B.把“==”右边的值赋值给左边。

python之基础练习30题

python之基础练习30题

python之基础练习30题学⽽时习之,不亦说乎!python是⼀门语⾔,要经常练习,希望我整理出来的这些题⽬对初学者或者经常不⽤python的你有所帮助。

题⽬:1,九九乘法表2,⼿动输⼊⼀个字符串,打散放进⼀个列表,⼩写字母从⼤到⼩排列序,⼤写字母保持不变3,li=[1,2,3,4,5,6,7,8,8]组成多少个互不相同且不重复的两位数4,计算1+2+3...+98+99+100,并打印出计算公式5.列表['alex','egon','yuan','wusir','666']1.把666替换成999# 2.获取"yuan"索引# 3.假设不知道前⾯有⼏个元素,分⽚得到最后的三个元素6.切割字符串"luffycity"为"luffy","city"7.求1~100间所有偶数的和(亦可奇数和,分别使⽤for,while循环写)8.从键盘接收⼀百分制成绩(0~100),要求输出其对应的成绩等级A~E。

# 其中,90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。

9.输⼊⼀年份,判断该年份是否是闰年并输出结果。

(该程序可以重复使⽤使⽤while True)# 注:凡符合下⾯两个条件之⼀的年份是闰年。

(1)能被4整除但不能被100整除。

(2)能被400整除。

10.将列表['alex', 'steven', 'egon'] 中的每⼀个元素使⽤ ‘\_’ 连接为⼀个字符串11.求100以内不能被3整除的所有数,并把这些数字放在列表sum3=[]⾥,并求出这些数字的总和和平均数。

Python基础练习题100例(Python3.x)

Python基础练习题100例(Python3.x)

Python基础练习题100例(Python3.x)1:题⽬:有四个数字:1、2、3、4,能组成多少个互不相同且⽆重复数字的三位数?各是多少?程序分析:可填在百位、⼗位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满⾜条件的排列。

程序源代码:1for i in range(1, 5):2for j in range(1, 5):3for k in range(1, 5):4if (i != k) and (i != j) and (j != k):5print(i, j, k)View Code以上实例输出结果为:1 12 32 1 2 43 1 3 24 1 3 45 1 4 26 1 4 37 2 1 38 2 1 49 2 3 110 2 3 411 2 4 112 2 4 313 3 1 214 3 1 415 3 2 116 3 2 417 3 4 118 3 4 219 4 1 220 4 1 321 4 2 122 4 2 323 4 3 124 4 3 2View Code2:题⽬:企业发放的奖⾦根据利润提成。

利润(I)低于或等于10万元时,奖⾦可提10%;利润⾼于10万元,低于20万元时,低于10万元的部分按10%提成,⾼于10万元的部分,可提成7.5%;20万到40万之间时,⾼于20万元的部分,可提成5%;40万到60万之间时⾼于40万元的部分,可提成3%;60万到100万之间时,⾼于60万元的部分,可提成1.5%,⾼于100万元时,超过100万元的部分按1%提成,从键盘输⼊当⽉利润I,求应发放奖⾦总数?程序分析:请利⽤数轴来分界,定位。

注意定义时需把奖⾦定义成长整型。

程序源代码:1 i = int(input('净利润:'))2 arr = [1000000,600000,400000,200000,100000,0]3 rat = [0.01,0.015,0.03,0.05,0.075,0.1]4 r = 05for idx in range(0,6):6if i>arr[idx]:7 r+=(i-arr[idx])*rat[idx]8print ((i-arr[idx])*rat[idx])9 i=arr[idx]10print(r)View Code以上实例输出结果为:1净利润:1200002 1500.03 10000.04 11500.0View Code3:题⽬:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少?程序分析:假设该数为 x。

python基础练习题目

python基础练习题目

python基础练习测试题1、列表和元组之间的区别是?答:二者的主要区别是列表是可变的,而元组是不可变的。

举个例子,如下所示:>>> mylist=[1,3,3]>>> mylist[1]=2>>> mytuple=(1,3,3)>>> mytuple[1]=2Traceback (most recent call last):File "<pyshell#97>", line 1, in <module>mytuple[1]=2会出现以下报错:TypeError: ‘tuple’object does not support item assignment关于列表和元组的更多内容,可以查看这里:从Q4到Q20都是针对新手的Python面试基础试题,不过有经验的人也可以看看这些问题,复习一下基础概念。

2、解释一下Python中的三元运算子?答:不像C++,我们在Python中没有?:,但我们有这个:[on true] if [expression] else [on false]如果表达式为True,就执行[on true]中的语句。

否则,就执行[on false]中的语句。

下面是使用它的方法:>>> a,b=2,3>>> min=a if a<b else b>>> min运行结果:2>>> print("Hi") if a<b else print("Bye")运行结果:Hi3、在Python中如何实现多线程?答:一个线程就是一个轻量级进程,多线程能让我们一次执行多个线程。

我们都知道,Python是多线程语言,其内置有多线程工具包。

Python中的GIL(全局解释器锁)确保一次执行单个线程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Advanced computation linguistics1. Collect the most frequent words in 5 genres of Brown Corpus:news, adventure, hobbies, science_fiction, romanceTo collect most frequent words from the given genres we can follow the following steps:>>> import nltk>>> from nltk.corpus import brown>>> brown.categories()['adventure', 'belles_lettres', 'editorial', 'fiction', 'government', 'hobbies','humor', 'learned', 'lore', 'mystery', 'news', 'religion', 'reviews', 'romance', 'science_fiction']>>> news_text = brown.words(categories=['news','adventure','hobbies','science_fiction','romance'])>>> from nltk.probability import FreqDist>>> fdist=FreqDist([w.lower() for w in news_text])>>> voca=fdist.keys()>>> voca[:50]['the', ',', '.', 'and', 'of', 'to', 'a', 'in', 'he', "''", '``', 'was', 'for','that', 'it', 'his', 'on', 'with', 'i', 'is', 'at', 'had', '?', 'as', 'be', 'you', ';', 'her', 'but', 'she', 'this', 'from', 'by', '--', 'have', 'they', 'said','not', 'are', 'him', 'or', 'an', 'one', 'all', 'were', 'would', 'there', '!', 'out', 'will']>>> voca1=fdist.items()>>> voca1[:50][('the', 18635), (',', 17215), ('.', 16062), ('and', 8269), ('of', 8131), ('to',7125), ('a', 7039), ('in', 5549), ('he', 3380), ("''", 3237), ('``', 3237), ('was', 3100), ('for', 2725), ('that', 2631), ('it', 2595), ('his', 2237), ('on', 2162), ('with', 2157), ('i', 2034), ('is', 2014), ('at', 1817), ('had', 1797), ('?', 1776), ('as', 1725), ('be', 1610), ('you', 1600), (';', 1394), ('her', 1368), ('but', 1296), ('she', 1270), ('this', 1248), ('from', 1174), ('by', 1157), ('--', 1151), ('have', 1099), ('they', 1093), ('said', 1081), ('not', 1051), ('are', 1019), ('him', 955), ('or', 950), ('an', 911), ('one', 903), ('all', 894), ('were', 882), ('would', 850), ('there', 807), ('!', 802), ('out', 781), ('will',775)]This means that the frequency of word “the” is more than others.2. Exclude or filter out all words that have a frequency lower than 15 occurrencies. (hint using conditional frequency distribution)By adding functionalities on the first task of collecting words based on their frequency ofoccurrences, we can filter words which has frequency occurrence of >=15.>>> filteredText= filter(lambda word: fdist[word]>=15,fdist.keys())>>> voca=fdist.keys()>>> filteredText[:50] /*first 50 words*/['the', ',', '.', 'and', 'of', 'to', 'a', 'in', 'he', "''", '``', 'was', 'for','that', 'it', 'his', 'on', 'with', 'i', 'is', 'at', 'had', '?', 'as', 'be', 'you', ';', 'her', 'but', 'she', 'this', 'from', 'by', '--', 'have', 'they', 'said','not', 'are', 'him', 'or', 'an', 'one', 'all', 'were', 'would', 'there', '!', 'out', 'will']>>> filteredText[-50:] /*last 50 words*/['musical', 'naked', 'names', 'oct.', 'offers', 'orders', 'organizations', 'parade', 'permit', 'pittsburgh', 'prison', 'professor', 'properly', 'regarded', 'release', 'republicans', 'responsible', 'retirement', 'sake', 'secrets', 'senior','sharply', 'shipping', 'sir', 'sister', 'sit', 'sought', 'stairs', 'starts', 'style', 'surely', 'symphony', 'tappet', "they'd", 'tied', 'tommy', 'tournament', 'understanding', 'urged', 'vice', 'views', 'village', 'vital', 'waddell', 'wagner', 'walter', 'waste', "we'd", 'wearing', 'winning']3. Then exclude or filter out all stopwords from the lists you have created.(hint using conditional frequency distribution)To filter the stop words we have to define tiny function using the word net library for 'english' language.>>> from nltk.corpus import stopwords>>> stopwords.words('english')['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', 'her', 'hers', 'herself', 'it', 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', 'these', 'those', 'am','is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no','nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', 'should', 'now']>>> def content_fraction(text):... stopwords= nltk.corpus.stopwords.words('english')... content = [w for w in text if w.lower() not in stopwords]... return len(content) / len(text)...>>> content_fraction(nltk.corpus.reuters.words())0.65997695393285261>>> filterdText = filterStopword(freqDist)>>> filterdText[:50][',', '.', "''", '``', '?', ';', '--', 'said', 'would', 'one', '!', 'could', '(', ')', ':', 'time', 'like', ' back','two', 'first', 'man','made', 'Mrs.', 'new', 'get', 'way', 'last', 'long', 'much', 'even', 'years', 'good', 'little', 'also', 'Mr.', 'see','right', 'make', 'got', 'home', 'many', 'never', 'work', 'know','day' , 'around', 'year', 'may', 'came', 'still']>>> freqDist[:50][',', 'the', '.', 'of', 'and', 'to', 'a', 'in', "''", '``', 'was', 'for', 'that', 'he', 'on', 'with', 'his', 'I', 'it','is', 'The', 'had', '?','at', 'as', 'be', ';', 'you', 'her', 'He', '--', 'from', 'by', 'said', 'h ave', 'not','are', 'this', 'him', 'or', 'were', 'an', 'but','would', 'she', 'they', 'one', '!', 'all', 'out ']From the result in filterdText words like 'the', 'it', 'is' and so on does not existcompared to the same number of output with stop words.>>> len(freqDist)2341>>> len(filterdText)2153We can further check that how many stop-words have been removed from the freqDist15 using len( ) function.4. Create a new list of lemmas or roots by normalizing all words by stemmingfor create the normalized list of lemmas we apply the Porter Stemmer nltk functionality.>>> file = open('filterdText.txt')>>> text = file.read()>>> textTokens = nltk.word_tokenize(text)Now we do stemming>>> p = nltk.PorterStemmer ( )>>> rootStemming = [p.stem(t) for t in textTokens]>>> textTokens[:100]['!', '&', "'", "''", "'em", '(', ')', ',', '--', '.', '1', '10', '100', '11', '12', '13', '14', '15', '16', '17', '18', '1958', '1959','1960', '1961', '2', '20', '200', '22', '25', '3', '30', '4', '5', '50', '6', '60 ', '7', '8', '9', ':', ';', '?', 'A.', 'Actually','Af', 'Ah', 'Aj', 'Alexander', 'Also', 'Although', 'Americ a', 'American', 'Americans','Among', 'Angeles','Anne', 'Anniston', 'Another', 'April', 'Association', 'Augu st', 'Austin', 'Avenue', 'B', "B'dikkat", 'B.','Barton', 'Beach', 'Belgians', 'Besides', 'Bill', 'Billy', 'B lue', 'Board', 'Bob','Bobbie', 'Boston', 'Brannon','British', 'C.', 'Cady', 'California', 'Catholic', 'Cath y', 'Center', 'Central', 'Charles', 'Charlie', 'Chicago','Christian', 'Church', 'City', 'Class', 'Clayton', 'Club', 'Co.', 'Coast','Cobb', 'College']This function can display sorted non normalized sample outputs for comparison>>> rootStemming[:100]['!', '&', "'", "''", "'em", '(', ')', ',', '--', '.', '1', '10', '100', '11', '12', '13', '14', '15', '16', '17', '18', '1958', '1959','1960', '1961', '2', '20', '200', '22', '25', '3', '30', '4', '5', '50', '6', '60 ', '7', '8', '9', ':', ';', '?', 'A.','Actual', 'Af','Ah', 'Aj', 'Alexand', 'Also', 'Although', 'America', 'American', 'American', 'Among','Angel', 'Ann','Anniston', 'Anoth', 'April', 'Associ', 'August', 'Austin','Avenu', 'B', "B'dikkat", 'B.','Barton', 'Beach','Belgian', 'Besid', 'Bill', 'Billi', 'Blue', 'Board', 'Bob ', 'Bobbi', 'Boston', 'Brannon','British', 'C.', 'Cadi','California', 'Cathol', 'Cathi','Center','Central','Charl','Charli','Chicago','Christian', 'Church', 'Citi','Class', 'Clayton', 'Club', 'Co.', 'Coast', ' Cobb', 'Colleg']This can sorted stemmed sample output for comparison5. Create a new list of lemmas or roots by normalizing all words by lemmatizationAfter importing the file we need to lemmatize, which is the same step as the previous one:and using the same rawText>>> wnl = nltk.WordNetLemmatizer()>>> rootLemmatize = [wnl.lemmatize(t) for t in textTokens]>>> rootLemmatize[:100] / *the first 100 sorted lemmatized lemmas for comparison*/['!', '&', "'", "''", "'em", '(', ')', ',', '--', '.', '1', '10', '100', '11', '12', '13', '14', '15', '16', '17', '18', '1958', '1959','1960', '1961', '2', '20', '200', '22', '25', '3', '30', '4', '5', '50', '6', '60 ', '7', '8', '9', ':', ';', '?', 'A.', 'Actually','Af', 'Ah', 'Aj', 'Alexander', 'Also', 'Although', 'Americ a', 'American', 'Americans','Among', 'Angeles','Anne', 'Anniston', 'Another', 'April', 'Association', 'Augu st', 'Austin', 'Avenue', 'B', "B'dikkat", 'B.','Barton', 'Beach', 'Belgians', 'Besides', 'Bill', 'Billy', 'B lue', 'Board', 'Bob','Bobbie', 'Boston', 'Brannon','British', 'C.', 'Cady', 'California', 'Catholic', 'Cath y', 'Center', 'Central', 'Charles', 'Charlie', 'Chicago','Christian', 'Church', 'City', 'Class', 'Clayton', 'Club','Co.','Coast','Cobb', 'College']We end this task by writing the out put of the lemmatized lemmas or rootwords to the file '(rootLemmatize.txt').6. Use the most frequent lemmas to find semantic similarities using WordNet.To find synsets with related meanings we have to traverse the WordNet network. knowing which word is semantically related is useful for indexing a collection of texts. For example a search for a general term like 'England' will match for specific terms like 'UK'.Top 100 frequent lemmas:>>> file = open('filterdText.txt') /*from 'filterdText' we get the words*/>>> tmp = file.read()>>> from nltk.tokenize import RegexpTokenizer /*remove punctuations*/>>>>>> tokenizer = RegexpTokenizer(r'\w+')>>> textSimilarity = tokenizer.tokenize(tmp)>>> freqDistSimilarity = FreqDist([w.lower() for w in textSimilarity]) /* extract the first 100 frequent lemmas to new list*/>>> for word in textSimilarity:... freqDistSimilarity.inc(word)>>> tmpFDS = freqDistSimilarity.keys()[:100] /* first 100 most frequent lemmas*/>>> freqDistSimilarity.items()[:50][('s', 64), ('t', 60), ('re', 24), ('d', 22), ('you', 20), ('ll', 18), ('m', 14), ('he', 12), ('let', 12), ('man', 10), ('p',10), ('we', 10), ('I', 8), ('i', 8), ('ve', 8), ('won', 8), ('year', 8), ('B', 6), ('a', 6), ('actually', 6), ('also', 6),('although', 6), ('among', 6), ('another', 6), ('association', 6), ('b', 6), ('beach', 6), ('bill', 6),('blue', 6),('board', 6), ('center', 6), ('central', 6), ('church', 6), (' city', 6), ('class', 6), ('club', 6), ('college', 6), ('come', 6), ('committee',6) ,('council',6),('county',6),('court',6),('day',6),('department',6),('district', 6), ('don', 6), ('earth', 6), ('education', 6), ('even', 6), ('every', 6)]>>> def pathSimilarity(word1,word2, s=wnet.path_similarity): /*path similarity between two words*/... synSets1= wnet.synsets(word1)... synSets2= wnet.synsets(word2)... pointSimilarity = []... for synSet1 in synSets1:... for synSet2 in synSets2:... pointSimilarity.append(s(synSet1,synSet2))... if len(pointSimilarity)==0:... return 0... else:... return max(pointSimilarity)>>> tmpFDS[30:35] /*arbitrary path similarity test for 5 lemmas*/['center', 'central', 'church', 'city', 'class']>>> for word1 in tmpFDS[30:35]:... for word2 in tmpFDS[30:35]:... print word1+' == '+word2+' -->', pathSimilarity(word1,word2)center == center --> 1.0center == central --> 0.25center == church --> 0.25center == city --> 0.166center == class --> 0.5central == center --> 0.2central == central --> 1.0central == church --> 0.083central == city --> 0.111central == class --> 0.083church == center --> 0.25church == central --> 0.2church == church --> 1.0church == city --> 0.166church == class --> 0.2city == center --> 0.166city == central --> 0.111city == church --> 0.166city == city --> 1.0city == class --> 0.25class == center --> 0.5class == central --> 0.166class == church --> 0.2class == city --> 0.25class == class --> 1.0Because of the different sizes of synset for the lemmas we can get different path similarity . An independent path similarity test on the synonym sets also proves the same hypothesis.We continue the analysis with the rest of the lemmas by calling the pathSimilarity( ) function with the provided arguments. From above results we can say that the root word 'class' and'center' has a better semantic similarity.。

相关文档
最新文档