PYTHON编程实例

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

目的:用一个实例总结学习到的with语句,函数,列表推导,集合,排序,字符分割等内容

要求:分别以james,julie,mikey,sarah四个学生的名字建立文本文件,分别存储各自的成绩,时间格式都精确为分秒,时间越短成绩越好,分别输出每个学生的无重复的前三个最好成绩,且分秒的分隔符要统一为“.”

数据准备:分别建立四个文本文件

james.txt2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22

julie.txt 2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21

mikey.txt2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38

sarah.txt2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55

import os

os.chdir('C:\Python33\HeadFirstPython\hfpy_code\chapter5')#将工作空间修改为文件所在的目录

#定义函数get_filedata从文件中取值def get_filedata(filename):

try:

with open(filename)as f:#with语句打开和自动关闭文件

data=f.readline()#从文件中逐行读取字符

return(data.strip().split(','))#将字符间的空格清除后,用逗号分隔字符except IOError as ioerr:

print('File Error'+str(ioerr))#异常处理,打印错误

return(None)#定义函数modify_time_format将所有文件中的时分表达方式统一为“分.秒”def modify_time_format(time_string):

if"-"in time_string:

splitter="-"

elif":"in time_string:

splitter=":"

else:

splitter="."

(mins,secs)=time_string.split(splitter)#用分隔符splitter分隔字符后分别存入mins和secs

return(mins+'.'+secs)#定义函数get_prev_three返回文件中排名前三的不重复的时间成绩def get_prev_three(filename):

new_list=[modify_time_format(each_t)for each_t in get_filedata(filename)] #采用列表推导将统一时分表达方式后的记录生成新的列表

delete_repetition=set(new_list)#采用集合set函数删除新列表中重复项,并生成新的集合

in_order=sorted(delete_repetition)#采用复制排序sorted函数对无重复性的新集合进行排序

return(in_order[0:3])#返回列表前三项

#分别输出对应文件中排名前三的不重复的时间成绩print

(get_prev_three("james.txt"))print(get_prev_three("julie.txt"))print

(get_prev_three("mikey.txt"))print(get_prev_three("sarah.txt"))

【程序1】

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

#Filename:001.py

cnt=0#count the sum of result for i in range(1,5):

for j in range(1,5):

for k in range(1,5):

if i!=j and i!=k and j!=k:

print i*100+j*10+k

cnt+=1print cnt

程序2】

题目:企业发放的奖金根据利润提成。利润(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#Filename:002.py

2i=int(raw_input('Enter the profit:'))

3arr=[1000000,600000,400000,200000,100000,0]

4rat=[0.01,0.015,0.03,0.05,0.075,0.1]

5r=0

6for idx in range(0,6):

7if i>arr[idx]:

8r+=(i-arr[idx])*rat[idx]

9print(i-arr[idx])*rat[idx]

10i=arr[idx]

11print r

【程序3】

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

#-*-coding:utf-8-*-'''

Created on2015-6-7

#第三题:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少

@author:Administrator'''import math

num=1while True:

if math.sqrt(num+100)-int(math.sqrt(num+100))==0and math.sqrt(num+ 268)-int(math.sqrt(num+268))==0:

print(num)

break

num+=1

【程序4】

题目:输入某年某月某日,判断这一天是这一年的第几天?

1#author:叛军

2import datetime

3import time

4dtstr=str(raw_input('Enter the datetime:(20151215):'))

5dt=datetime.datetime.strptime(dtstr,"%Y%m%d")

6another_dtstr=dtstr[:4]+'0101'

7another_dt=datetime.datetime.strptime(another_dtstr,"%Y%m%d")

8print(int((dt-another_dt).days)+1)

【程序5】

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

【程序8】

题目:输出9*9口诀。

相关文档
最新文档