python练习题(一)

说明:以练习题的方式,学习python基础知识点,主要是数据分析方向常用的numpy、pandas、matplotlib等库对应的练习题。仅供参考,题目来源于网络,如有侵权请联系我删除。

第一组 python基础语法:

(1)下面两段代码输出的结果相同么?请解释原因。
        ① x=4,y=5,print(x+y) ② x='4',y='5', print(x+y)

    答:一是整数间加法运算,结果为 9 ;二是字符串之间的拼接操作,结果为 45。

 

(2)‘10/3',‘10//3’和'10%3'结果相同么?请说明原因

    答:结果分别为:3.333  ,3  ,1。其中,/是除法运算,//所得结果向下取整,也叫地板除,%是取余运算。

 

(3)string1='I'm a student.' 。print(string1)结果会报错么?如何修改string1使其得到正确的输出?

    答:会报错SyntaxError: invalid syntax,因为系统会认为最近两个单引号是匹配的。如有特殊字符时候,可使用转义字符\ 。修改为 string1='I\'m a student.'     print(string1)

 

(4) a = 3,str(a*3) + str(a)*3的输出是什么?

    答:输出结果为9333。str(a*3)得到的是字符串类型的 9,str(a)*3表示字符串 3 重复3次,加号是字符串拼接。

 

(5)my_string = 'this is my string', 如何查看这个字符串长度?

    答:查看字符串长度用len(str)函数。即len(my_string)

 

(6)a,b = 4,5,a大于b 或 b大于等于5。请写出这里逻辑运算的代码,并查看输出会是什么。

    答:a,b = 4,5     a>b or b>=5   ,输出结果为 True

 

(7)'='和'=='分别表示什么含义?print(2==5)输出什么结果?属于什么类型数据?

    答:'='和'=='分别表示赋值和等于。print(2==5)输出False,属于布尔类型数据。

 

(8)计算:100%(2+2)**3//5

    答:结果为7,计算步骤:100%4^3//5;100%64//5;36//5。其中**代表指数运算,%代表取余运算,//代表地板除(向下取整),同时注意计算次序。

 

(9)a,b = 4,5,a *= b,a=?

    答:a=20,即a=4 ,b=5 ,a=a*b=4*5=20。

 

(10)int(3.14159)==float(3)会输出什么结果?为什么?type(int(3.14159))==type(float(3))的结果又是什么?

答:int(3.14159)==float(3)输出结果为True,type(int(3.14159))==type(float(3))输出结果为False。因为int(3.14159)即3,float(3)即3.0,二者数值大小相同,但是类型不同,一个是整型一个是浮点型。

 

第二组 列表,字典,集合:

(1)L=[1,2,3,4,1,4,5,6],请完成:①删除列表中的重复元素并输出一个集合;②将7添加到集合中;③将集合转化为列表,删除元素3.

答:首先区别列表与集合:列表与集合的区别在于集合中元素不重复。使用大括号{ } 或者set() 函数创建集合,注意:创建一个空集合必须用set() 而不是{ }。

L=[1,2,3,4,1,4,5,6]
s=set(L)
print(s)

    其次,集合添加元素使用add()函数。

s.add(7)
print(s)

    最后,列表用list()函数,删除元素用pop()函数。

L2 = list(s)
L2.pop(2)

(2)dog = ["tom", "jack", "Collie", "Marry"], kitty = "Marry", 如何判断 kitty 是否是 dog 中的一员?

    答:使用in。in的常用用法:在 for 循环中,获取列表或者元组的每一项;判断左边的元素是否包含于列表(如本题中);用来判断字符串是否包含某一串,可以用来筛选文件使用。返回结果为True 或 False。

dog = ["tom", "jack", "Collie", "Marry"]
kitty = "Marry"
kitty in dog

(3)dog = ["tom", "jack", "Collie", "Marry"],将dog逆序。

答:列表中元素逆序输出方法dong[ : : -1];或者使用dog.reverse()函数 或者 reversed(dog)方法,不过 reversed(dog)返回结果为倒序可遍历对象,需遍历出。

(1)dog = ["tom", "jack", "Collie", "Marry"]
   dog[ : : -1]

(2)dog = ["tom", "jack", "Collie", "Marry"]
   dog.reverse()

(3)dog = ["tom", "jack", "Collie", "Marry"]
   for i in reversed(dog):
       print(i) 

(4)L=["former", "latter", "starboard"],请完成:为L在末端添加一个元素“port”。

    答:列表末端添加元素使用append()方法。

除此之外, append() 追加单个元素到List的尾部,只接受一个参数,参数可以是任何数据类型,被追加的元素在List中保持着原结构类型,比如元素如果是一个list,那么这个list将作为一个整体进行追加;extend() 将一个列表中每个元素分别添加到另一个列表中,只接受一个参数;extend()相当于是将list B 连接到list A上; insert() 将一个元素插入到列表中,第一个参数是索引点,即插入的位置,第二个参数是插入的元素;+ 加号,将两个list相加,会返回到一个新的list对象,注意与前三种的区别。前面三种方法(append, extend, insert)可对列表增加元素的操作,他们没有返回值,是直接修改了原数据对象(不推荐使用。)
 

L1=["former", "latter", "starboard"]
L2 = ['nn','m',['nm']]

L1.append(L2)
结果为:['former', 'latter', 'starboard', ['nn', 'm', ['nm']]]

L1.extend(L2)
结果为:['former', 'latter', 'starboard', 'nn', 'm', ['nm']]

L1.insert(0,L2)
结果为:[['nn', 'm', ['nm']], 'former', 'latter', 'starboard']

L1+L2
结果为:['former', 'latter', 'starboard', 'nn', 'm', ['nm']]

(5)L=[1,2,3,1,5,11,3,6,4,2,5,8,4,2],计算L的最值,和加和。 

    答:最值L.max(),L.min(),加和L.sum()

 

(6)cube:length:40,width:40,height:40, 请创建一个字典,包括cube的所有信息,并向字典中添加条目“color”和对应值"red",删除属性height,修改属性width为20.

    答:创建字典的几种方式如。除此之外还可以通过推导式创建等。

#直接赋值创建,注意是大括号
dic = {'length':40,'width':40,'height':40}

#通过关键字dict和关键字参数创建
dic = dict(length=40, width=40, height=40)

#通过二元组列表创建
dic = [('length',40),('width',40),('height',40)]

#dict和zip结合创建
dic = dict(zip(['length','width','height'], [40, 40, 40]))

  字典中增加元素:dict['color']='red'    ;

  字典中删除元素:dict.pop('height')  ;

                               del dict['height'] # 删除键是'height'的条目

                               dict.clear() # 清空词典所有条目

                               del dict # 删除词典

  字典中修改元素:dict['width']=20

 

(7)set_a = {1, 5, 10} set_b = {1, 10, 12} 找出set_a和set_b中共有的元素(交集)。

   答:print(set_a&set_b)。交集 &或set_a.intersection(set_b);并集| 或set_a.union(set_b);差集- 或set_a.difference(set_b)。除此之外,还有对称差集和子集,超子集等。

 

(8)从1到10中选出所有的奇数。

  答:可以使用切片方式实现。

import numpy as np
a = np.arange(1,11)
a[: : 2]

(9)将字典变为两个元素一一对应的列表,一个只含有关键字,另一个只含有值。 如:{'a': 1, 'b': 2}变为['a', 'b'], [1, 2]

    答:使用keys()和values()函数实现。

dt = {'a': 1, 'b': 2}
a = dt.keys()
b = dt.values()

第三组 条件判断,循环和函数

(1)L=[1,2,'','my',3,'name','is',4,'katty'],利用循环语句和判断条件,分别输出列表中的字符串和数字。

    答:循环语句for循环和whlie循环;判断语句if...else。

L=[1,2,'','my',3,'name','is',4,'katty']
for i in L:
    if type(i)==int:
        print(i)
    else:
        continue

for i in L:
    if type(i)==str:
        print(i)
    else:
        continue

(2)利用循环语句输出1到50中5的倍数,将其存放到一个列表中。

a=[]
for i in range(1,51):
    if i%5==0:
        a.append(i)
print(a)
        

(3)定义一个判断字符串的长度是否大于10的函数。

    答:定义函数

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。

return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

def fun(s):
    if len(s)>10:
        print('字符串长度大于10')
    else:
        print('字符穿串长度不大于10')       
s='hello world,i love you'
fun(s)

(4)定义一个求解阶乘的函数。    

import numpy as np
import pandas as pd
from functools import reduce
def factorial(n):
    L = np.arange(1,n+1)
    return reduce(lambda x,y:x*y,L)
factorial(5)

    答:reduce()函数是内置函数,使用的方式:reduce(function, iterable[, initializer]),其中function表示函数,有两个参数;iterable 表示可迭代对象;initializer表示可选,初始参数。

 

(5)利用列表生成式,生成1-5的阶乘。

[factorial(i) for i in range(1,6)]

   答:使用到了(4)中的函数。

 

(6)利用函数和列表生成式,标记一个列表,奇数标记为1,偶数标记为2,并且统计一下奇数和偶数的数量。 例如:[1,4,2,4,2,9,5],得到[1,2,2,2,2,1,1]

函数:
def func(i):
    if i%2==0:
        return 2
    else:
        return 1
l = [1,4,2,4,9,5]

列表生成式:
[func(i) for i in l]

注:第一部分结束。如果想自己练习,可以到我的百度网盘下载原题,使用Jupyter notebook自己写python代码实现。加油哦!

百度网盘题目地址:https://pan.baidu.com/s/1A7JFRdaBYLlnFVn6xT_SOg

你可能感兴趣的:(python)