python学习笔记——网易云课堂——python基础阶段考核

'''【项目01】  商铺数据加载及存储

作业要求:
1、成功读取“商铺数据.csv”文件
2、解析数据,存成列表字典格式:[{'var1':value1,'var2':value2,'var3':values,...},...,{}]
3、数据清洗:
① comment,price两个字段清洗成数字
② 清除字段缺失的数据
③ commentlist拆分成三个字段,并且清洗成数字
4、结果存为.pkl文件
'''
#读取数据
f=open(r'C:\Users\Lenovo\OneDrive\统计分析\网易云课堂微课程:python\课程一、基础语言入门:从零开始学习Python\数据\商铺数据.csv',
       'r',encoding='utf8')
print(f.readlines()[0:5])
#定义函数
def fcm(s):
    if '' in s:
        return(int(s.split(' ')[0]))
    else:
        return('缺失数据')
    
def fpr(s):
    if '' in s:
        return(float(s.split('')[-1]))
    else:
        return('缺失数据')

def fcml(s):
    if ' ' in s:
        quality=float(s.split('                                ')[0][2:])#空格数不一样提取不出数据,必须按照文本空格数
        environment=float(s.split('                                ')[1][2:])
        service=float(s.split('                                ')[2][2:])
        return([quality,environment,service])
    else:
        return('数据缺失')  
#解析数据
m=[]
n=0#创建计数变量
f.seek(0)
for line in f.readlines()[1:20]:
    data=line.split(',')
    typ=data[0]#提取分类数据
    name=data[1]#提取商铺名称
    cmt=fcm(data[2])#提取评论数
    star=data[3]#提取星级评定
    price=fpr(data[4])#提取人均消费
    add=data[5]#提取商铺地址
    qua=fcml(data[6])[0]#提取口味评分
    env=fcml(data[6])[1]#提取环境评分
    ser=fcml(data[6])[2]#提取服务评分
    if '缺失数据' not in [cmt,price,qua]:
        n=n+1
        lst=[['type',typ],
            ['name',name],
            ['comment',cmt],
            ['star',star],
            ['price',price],
            ['address',add],
            ['quality',qua],
            ['environment',env],
            ['service',ser]]
        m.append(dict(lst))
    else:
        continue
print(m)
#存为pkl文件
import pickle
pic=open(r'C:\Users\Lenovo\OneDrive\统计分析\网易云课堂微课程:python\课程一、基础语言入门:从零开始学习Python\数据\阶段一项目一作业.pkl','wb')
pickle.dump(m,pic)
pic.close()
print('sucessfull')
import pickle
f=open(r'C:\Users\Lenovo\OneDrive\统计分析\网易云课堂微课程:python\课程一、基础语言入门:从零开始学习Python\数据\阶段一项目一作业.pkl','rb')
pic=pickle.load(f)
print(pic)
#题目1:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的两位数?都是多少?
lst=[1,2,3,4]
n=0
m=0
for i in lst:
    for j in lst:
        if j != i:
            n+=1
            print('第%i个不重复数字为:\n'%n,str(i)+str(j))
        else:
            continue
print('排列完成,总共有%i个非重复组合'%n)       
#题目2:输入三个整数x,y,z,请把这三个数由小到大输出,可调用input()。(需要加判断:判断输入数据是否为数字)
lst=[]
for i in range(1,4): 
    m=input('请输入第%i个数字:'%i)
    while m.isnumeric==False:
        m=input('请不要输入非数字字符,请重新输入%i个数字:'%i)
    else:
        lst.append(int(m))
lst.sort(reverse=True)
print(lst)
# 题目3:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
# 提示:利用while语句,条件为输入的字符不为'\n'.
# 该题目不需要创建函数
st=input('请输入一串字符:\n')
alpha=0
space=0
num=0
others=0
for i in st:
    if i.isalpha()==True:
        alpha+=1
    elif i.isspace()==True:
        space+=1
    elif i.isdigit()==True:
        num+=1
    else:
        others+=1
print('输入的字符串中,字母有%i个,空格有%i个,数字有%i个,其他字符有%i个'%(alpha,space,num,others))
    
# 题目4:猴子吃桃问题
# 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,
# 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
# 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
# 提示:采取逆向思维的方法,从后往前推断。
# 该题目不需要创建函数


n=1
for i in range(1,10):
    n=(n+1)*2
print(n)    
# 题目5:猜数字问题,要求如下:
# ① 随机生成一个整数
# ② 猜一个数字并输入
# ③ 判断是大是小,直到猜正确
# ④ 判断时间
# 提示:需要用time模块、random模块
# 该题目不需要创建函数

import time
import random
play_it=input('Are you want to begin? .y or n')
while play_it == 'y':
    c=time.time()
    num=random.randint(1,10)
    x=int(input('请输入你认为正确的数字:'))
    while x != num:
        x=int(input('猜错啦,请重新输入你认为正确的数字:'))
    else:
        print('恭喜,猜对了!你真厉害!')
        b=time.time()
    usedtime=b-c
    break
print('总用时%.2f'%usedtime)    

 

posted @ 2018-10-05 22:29  yang905  Views(716)  Comments(0)    收藏  举报