Python基础入门实战案例

6 篇文章 0 订阅
5 篇文章 0 订阅

需求分析

本实训主要锻炼学生的Python基础语句使用能力,小到简单的输入输出大到类的定义继承都有详细的代码介绍,且代码为Python3的版本。无需学生自己对代码进行升级和改造。

实验步骤

步骤一:Python基础

第一步:打印输出

在屏幕上输出“Hello Word”。

print('hello world')

输出结果如下。
hello world

第二步:基本语法

1、变量定义赋值输出

x = "a" # 变量命名
print(x)# 打印变量的值
print(type(x)) # 查看变量类型
x = 3# 之所以成为动态语言的原因
print(type(x))

输出结果如下。

a
<class ‘str’>
<class ‘int’>

2、关键字

import keyword
print(keyword.kwlist)

输出结果如下。
在这里插入图片描述
3、数学运算

print(x + 1,x - 1, x * 2,x/2, x ** 2)

输出结果如下。
4 2 6 1 9

4、Python 2与Python 3除法的区别

print(float(1/2)) # python 2   1.0/2    或者 float(1)/2
print(1/2)

输出结果如下。
0.5
0.5

5、数据类型

# 读取数据集中的location
import pandas as pd
medicare = pd.read_csv('./medicare.csv')
location = medicare['Location'][0]
# 整型、浮点型
location # 字符串 location
print(location)

输出结果如下。

2505 U S HIGHWAY 431 NORTH
BOAZ, AL 35957

t = True # 布尔型
f = False
print(t and f) # 与
print(t or f)# 或
print(not t)# 非
print(t != f)# 异或

输出结果如下。
False
True
False
True

print(not (True | False) | True) # not (True | False) | True  # 取非操作

输出结果如下。
False

7、字符串类型:长度、索引、切片、合并和重复

S = 'Boyabigdata'
print(len(S))# 长度
print(S[0])# 索引,顺序和逆序
print(S[-2])
print(S[:])# 切片
print(S[1:3])
print(S+'xyz')# 合并和重复
print(S*3)
raws = r'B\nya'# 原始字符串
print(raws)

输出结果如下。
11
B
t
Boyabigdata
oy
Boyabigdataxyz
BoyabigdataBoyabigdataBoyabigdata
B\nya

8、字符串的相关方法:find, replace, upper, split, strip, lstrip, rstrip, capitalize, title

print(S.find('Boya')) # 找到第一次出现'Boya'的位置
print(S.replace('Boya','XYZ')) # 替换字符串
print(S.upper()) # 大写
line='aa,bb,ccc,dd'
print(line.split(',')) # 分割
line=' aa,bb,ccc,dd '
print(line.rstrip()) # 去掉末尾的空格
print(line.lstrip())# 去除开头的空格
print('  world '.strip()) # 去掉首尾的空格
hw12='%s %s %d' % ('hello','world',12) #格式化字符串
print('{} {} {}'.format('hello','world',12))
print(hw12)
print(hw12.capitalize())# 首字母大写
print(hw12.title())# 每个单词首字母大写

输出结果如下。

0
XYZbigdata
BOYABIGDATA
[‘aa’, ‘bb’, ‘ccc’, ‘dd’]
aa,bb,ccc,dd
aa,bb,ccc,dd
world
hello world 12
hello world 12
Hello world 12
Hello World 12

第三步:文件读写:open, csv, pandas

三种读取方式分别为read、readline、relines

打开文件,代码如下。

f = open('./medicare.csv',mode="r")# 生成文件对象

1、read读取,代码如下所示。

print(f.read(8))

结果如下所示。
Provider

2、readline读取,代码如下所示。

print(f.readline())

结果如下所示。

ID,Hospital Name,Address,City,State,ZIP Code,County Name,Phone Number,Measure Name,Measure ID,Score,Footnote,Measure Start Date,Measure End Date,Location

3、readlines读取,代码如下所示。

print(f.readlines())

结果如下图所示。
在这里插入图片描述

关闭文件

f.close()
练习:读取第一行存为columns,第二行为sample

1、读取文件

import csv# csv模块读写
f = open('./medicare.csv',mode="r")
content = csv.reader(f)
samples = list(content)
print(samples[1])

结果如下图所示。
在这里插入图片描述

2、read方法读取文件内容

import pandas as pd
medicare = pd.read_csv('./medicare.csv')
print(medicare.head(1))

结果如下图所示。
在这里插入图片描述

第四步:列表

1、提取第一个样本,并查看类型

f = open('./medicare.csv', mode="r")
columns = f.readline()
sample = f.readline()
f.close()
clean_sample = sample.strip().split(',')
print(type(clean_sample))# 查看类型
print(clean_sample)

结果如下图所示。
在这里插入图片描述

2、列表创建和列表索引

sample = ['1325','City Hospital',0.67]
print(len(sample)) # 列表长度
print(sample[0]) # 列表索引
sample.append('01/01/2014') # 添加列表元素:末尾添加'01/01/2014'
print(sample)
sample.insert(-1,'12/31/2014') # 添加列表元素:指定位置-1添加'12/31/2014'
print(sample)

结果如下图所示。
在这里插入图片描述

3、整合两个列表输出

sample = ['1325','City Hospital',0.67]
date = ['01/01/2014','12/31/2014']
# 整合两个列表
sample.extend(date)
print(sample)

结果如下图所示。
[‘1325’, ‘City Hospital’, 0.67, ‘01/01/2014’, ‘12/31/2014’]

4、获取元素索引号

sample.index(0.67)

结果如下图所示。
2

练习1:提取第一个样本的Hospital Name和Score
# 参考代码
# 读取数据文件,并进行数据清洗
f = open('./medicare.csv', mode="r")
columns = f.readline()
sample = f.readline()
f.close()
columns_list = columns.strip().split(',')
sample_list = sample.strip().split(',')
# 使用中间变量index的方法
hospital = ['Hospital Name']
index = columns_list.index('Hospital Name')
hospital.append(sample_list[index])
# 不使用中间变量index的方法,节省代码行数,牺牲可读性
score = ['Score']
score.append(float(sample_list[columns_list.index('Score')]))
shortinfo = hospital + score
print(shortinfo)

结果如下图所示。
[‘Hospital Name’, ‘MARSHALL MEDICAL CENTER SOUTH’, ‘Score’, 0.98]

1、列表切片和元素删除

shortinfo = ['Hospital Name', 'MARSHALL MEDICAL CENTER SOUTH', 'Score', 0.98]
print(shortinfo[1:3])# 列表切片
print(shortinfo[:]) # 拷贝列表
print(shortinfo[:2])# 从头开始切片
print(shortinfo[::-1])# 切片产生逆序,等价于reverse(),区别?

结果如下图所示。

[‘MARSHALL MEDICAL CENTER SOUTH’, ‘Score’]
[‘Hospital Name’, ‘MARSHALL MEDICAL CENTER SOUTH’, ‘Score’, 0.98]
[‘Hospital Name’, ‘MARSHALL MEDICAL CENTER SOUTH’]
[0.98, ‘Score’, ‘MARSHALL MEDICAL CENTER SOUTH’, ‘Hospital Name’]

  • 字符串切片

    s = ‘hackdata’
    print(s[2:4])

结果如下图所示。

ck

  • 元素删除remove方法

     shortinfo = ['Hospital Name', 'MARSHALL MEDICAL CENTER SOUTH', 'Score', 0.98]
     shortinfo.remove('MARSHALL MEDICAL CENTER SOUTH') # 元素删除:remove方法
     print shortinfo
    

    结果如下所示。
    [‘Hospital Name’, ‘Score’, 0.98]

  • 元素删除:del方法

     shortinfo = ['Hospital Name', 'MARSHALL MEDICAL CENTER SOUTH', 'Score', 0.98]
     del shortinfo[1] # 元素删除:del方法
     print(shortinfo)
    

    结果如下所示。
    [‘Hospital Name’, ‘Score’, 0.98]

  • 元素删除:pop方法

    shortinfo = ['Hospital Name', 'MARSHALL MEDICAL CENTER SOUTH', 'Score', 0.98]
    shortinfo.pop(1) # 元素删除:pop方法
    print(shortinfo)
    

结果如下所示。
[‘Hospital Name’, ‘Score’, 0.98]

练习2:可变数据结构的浅拷贝与深拷贝

1、赋值操作

name1 = ['hack']
name2 = name1
name1.append('data')
print(name1)
print(name2)

结果如下所示。
[‘hack’, ‘data’]
[‘hack’, ‘data’]

2、浅拷贝操作

name1 = ['hack',['da','ta']]
name2 = name1[:]
name2[0] = 'hook'
name2[1][0] = 'do'
print(name1)
print(name2)

结果如下所示。
[‘hack’, [‘do’, ‘ta’]]
[‘hook’, [‘do’, ‘ta’]]
3、深拷贝操作

from copy import deepcopy
name1 = ['hack',['da','ta']]
name2 = deepcopy(name1)
name2[0] = 'hook'
name2[1][0] = 'do'
print(name1)
print(name2)

结果如下所示。
[‘hack’, [‘da’, ‘ta’]]
[‘hook’, [‘do’, ‘ta’]]

第五步:控制结构

1、for循环

for item in shortinfo:
    print(item)

结果如下所示。
Hospital Name
Score
0.98

2、循环时改变迭代列表

for item in shortinfo[:]:
    shortinfo.append(1)
print(shortinfo)

结果如下所示。
[‘Hospital Name’, ‘Score’, 0.98, 1, 1, 1]

3、range函数

l = ['hack','data']
for index in range(len(l)):
    print(index, l[index])

结果如下所示。
0 hack
1 data

4、enumerate函数

for index, item in enumerate(l):
    print(index, item)

结果如下所示。
0 hack
1 data

5、zip函数

for index, item in zip(range(len(l)),l):
    print(index, item)

结果如下所示。
0 hack
1 data

6、if条件语句
false_values = [False,None,0,(),{},[],’’] # Python的False值

# if 条件语句
review_sentiment = -1
if review_sentiment > 0 :
    print('positive')
elif review_sentiment ==0:
    print('neutral')
else:
    print('negative')

结果如下所示。
negative

7、while 循环结构

review_sentiment = -1
while review_sentiment < 5:
    review_sentiment += 1
    print('review_sentiment equals %d' % review_sentiment)

结果如下所示。

在这里插入图片描述
8、break,continue,pass

review_sentiment = -1
while review_sentiment < 20:
    review_sentiment += 1
    print('review_sentiment equals %d' % review_sentiment)
    if review_sentiment > 1:
        break

结果如下所示。

在这里插入图片描述

练习:取出Hospital Name和Score放入一个嵌套列表中,并将Hospital每个单词转换为首字母大写
import csv

with open('./medicare.csv', mode="r") as f:
    content = csv.reader(f)
    samples = list(content)

# 找到两列的索引位置
idx1 = samples[0].index('Hospital Name')
idx2 = samples[0].index('Score')
samples_filtered = []

# 将Hospital Name中的单词转换为首字母大写的形式
for item in samples[1:]:

    # 方法一 capitalize() + for循环
    words = item[idx1].strip().split(" ")
    for index, word in enumerate(words):
        words[index] = word.capitalize()
    item[idx1] = " ".join(words)
    samples_filtered.append([item[idx1], item[idx2]])

    # 方法二 title()
#     words = item[idx1].title()
#     samples_filtered.append([words,item[idx2]])

print(samples_filtered[:3])

结果如下所示。

[[‘Marshall Medical Center South’, ‘0.98’], [‘Wedowee Hospital’, ‘0.84’], [‘Crestwood Medical Center’, ‘0.98’]]

第六步:元组

shortinfo_tuple = tuple(shortinfo) # 元素不可变 就两个方法,count,index
print(shortinfo_tuple)

结果如下所示。
(‘Hospital Name’, ‘Score’, 0.98)
1、元素个数统计

   print(shortinfo_tuple.count(1))

结果如下所示。
0

2、返回索引位置

print(shortinfo_tuple.index(0.98))

结果如下所示。
2

第七步:字典

1、三种方式创建字典

dict1 = {'Marshall Medical Center South':0.98,'Wedowee Hospital':0.84}
dict2 = dict(Marshall_Medical_Center_South=0.98,Wedowee_Hospital=0.84)
dict3 = dict([('Marshall Medical Center South',0.98),('Wedowee Hospital',0.84)])
dict4 = dict([('Wedowee Hospital',0.84),('Marshall Medical Center South',0.98)]) # 无序性
print(dict1)
print(dict2)
print(dict3)
print(dict4)

结果如下所示。
在这里插入图片描述
2、有序字典

from collections import OrderedDict
ordered_dict1 = OrderedDict([('Wedowee Hospital',0.84),('Marshall Medical Center South',0.98)])
ordered_dict2 = OrderedDict([('Marshall Medical Center South',0.98),('Wedowee Hospital',0.84)])
print(ordered_dict1)
print(ordered_dict2)

结果如下所示。
OrderedDict([(‘Wedowee Hospital’, 0.84), (‘Marshall Medical Center South’, 0.98)])
OrderedDict([(‘Marshall Medical Center South’, 0.98), (‘Wedowee Hospital’, 0.84)])

3、通过两个列表创建字典

key_list = ['Marshall Medical Center South','Wedowee Hospital']
value_list = [0.98,0.84]
dict5 = {}
for key, value in zip(key_list,value_list):
    dict5[key] = value
print(dict5)

结果如下所示。
{‘Marshall Medical Center South’: 0.98, ‘Wedowee Hospital’: 0.84}

4、元素访问

print(dict5['Marshall Medical Center South']) # 通过键直接访问
print(dict5.get('Marshall Medical Center South')) # get方法获得键的值
print(dict5.get('Marshall')) # 不存在键值,返回none
print(dict5.get('Marshall',u'键值不存在')) # 可以指定键不存在时,返回的值
print('Marshall Medical Center South' in dict5)# in 查询

结果如下所示。

0.98
0.98
None
键值不存在
True

5、返回数据

print(dict5.keys()) # 返回所有的键
print(dict5.values()) # 返回所有的值
print(dict5.items())# 返回键值元组列表
结果如下所示。
在这里插入图片描述

6、items遍历读取字典键值

for key,value in dict5.items(): # items遍历读取字典键值
    print(key,":",value)

结果如下所示。
Marshall Medical Center South : 0.98
Wedowee Hospital : 0.84

7、字典元素添加与删除

dict5['City Hospital']= 1 # 字典元素的添加 
print(dict5)
del dict5['Wedowee Hospital'] # del方法删除字典元素
print(dict5)
dict5.pop('City Hospital') # pop方法删除元素
print(dict5)
dict5.clear() # 删除字典中所有元素
print(dict5)

结果如下所示。
在这里插入图片描述

第八步:集合

1、创建集合

set1 = {1,2,3}# {}创建集合
print(set1)
print(shortinfo) # set函数创建集合
shortinfo_set = set(shortinfo)
print(shortinfo_set)

结果如下所示。
在这里插入图片描述
2、添加删除元素

shortinfo_set.add('City Hospital') # 增加元素
print(shortinfo_set)
shortinfo_set.remove('City Hospital') # 删除元素
print(shortinfo_set)

结果如下所示。

{‘Score’, ‘Hospital Name’, ‘City Hospital’, 0.98}
{‘Score’, ‘Hospital Name’, 0.98}

3、并集、交集、差集等集合运算

print(shortinfo_set)

结果如下所示。
{0.98, 1, ‘Hospital Name’, ‘Score’}

第九步:推导式

1、把列表shortinfo中的所有元素变为字符串(多行)

for index,item in enumerate(shortinfo):
    shortinfo[index] = str(item)
print(shortinfo)

结果如下所示。
[‘Hospital Name’, ‘Score’, ‘0.98’]

2、列表推导式

[str(item) for item in shortinfo]

结果如下所示。
[‘Hospital Name’, ‘Score’, ‘0.98’]

3、集合推导式

key_list = ['Marshall Medical Center South','Wedowee Hospital']
value_list = [0.98,0.84]
{str(item) for item in set(shortinfo)}# 集合推导式

结果如下所示。
{‘0.98’, ‘Hospital Name’, ‘Score’}

4、通过两个列表创建字典

dict5 = {}
for key, value in zip(key_list,value_list):
    dict5[key] = value
print(dict5)

结果如下所示。
{‘Marshall Medical Center South’: 0.98, ‘Wedowee Hospital’: 0.84}

5、字典推导式

{key:value for key,value in zip(key_list,value_list)}

结果如下所示。
{‘Marshall Medical Center South’: 0.98, ‘Wedowee Hospital’: 0.84}

第十步:函数

1、定义平方函数

def square(x):
    s = x*x
    return s
square(2)

结果如下所示。
4

步骤二:变量作用域:局部变量与全局变量

def square(x):
    global number # 局部变量转换为全局变量
    number = 5.0
    s = x*x
    return s
square(2)

结果如下所示。
4

print number

结果如下所示。
5.0

步骤三:参数设定

第一步:按位置顺序传入

def polynomial(x, y):
    z = x+2*y
    return z
print(polynomial(1, 2))

结果如下所示。
5

第二步:关键词传入

print(polynomial(y=1, x=2))

结果如下所示。
4

第三步: 默认参数

def polynomial(x, y=1):
z = x+2*y
return z
print(polynomial(x=2))
结果如下所示。
4

第四步:不定长参数*args

def polynomial(x, *args):
    for item in args:
        x += 2*item
    return x
print(polynomial(2, 1, 2))
print(polynomial(2, *[1, 2])) # 列表传入

结果如下所示。
8
8

第五步:不定长参数**kwargs

def polynomial(x, **kwargs):
    y = kwargs.pop('y', None)
    z = kwargs.pop('z', None)
    result = x+2*y+3*z
    return result

print(polynomial(x=1, y=1, z=2))
from sklearn.model_selection import train_test_split

结果如下所示。
9

步骤四:lambda函数

square = lambda x:x*x# 快速定义函数

步骤五:map函数

map(square,range(5)) # 列表中的元素依次执行函数

结果如下所示。
<map at 0x16fa88f0>

print [item.capitalize() for item in columns_list]
print map(lambda x:x.title(),columns_list)# map与lambda结合的优雅方式

结果如下所示。
在这里插入图片描述

步骤六:模块

1、导入模块

# import module as alias
# from module import *
# from module import func1,fun2

步骤七:类

第一步:定义类

# 定义欢迎用户的类
    class Greeter(object):
        # 构造方法
        def __init__(self, name):
            self.name = name  # 初始化属性
        # 实例方法
        def greet(self, upper=False):
            if upper:
                print('HELLO, %s!' % self.name.upper())
            else:
                print('Hello, %s' % self.name)
    g = Greeter('Sid')  # 创建Greeter类的一个实例(对象),并初始化实例属性
    g.greet()  # 调用类中的方法,使用默认参数
    g.greet(upper=True)  # 调用类中的方法,自定义参数

结果如下所示。
Hello, Sid
HELLO, SID!

第二步:继承类

class Welcome(Greeter):
    pass
w = Welcome('Sid')
print(w.name)
w.greet()

结果如下所示。
Sid
Hello, Sid

  • 40
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值