• python基础的几个小练习题


    题目:

    1、写一个程序,判断2008年是否是闰年。

    2、写一个程序,用于计算2008年10月1日是这一年的第几天?(2008年1月1日是这一年的第一天)

    3、(文件题)有一个“record.txt”的文件,内容如下:

    # name, age, score
    
    tom, 12, 86
    
    Lee, 15, 99
    
    Lucy, 11, 58
    
    Joseph, 19, 56

    第一栏为姓名(name),第二栏为年纪(age),第三栏为得分(score)

    现在,写一个Python程序,

    1)读取文件

    2)打印如下结果:

    得分低于60的人都有谁?

    谁的名字以L开头?

    所有人的总分是多少?

    3)姓名的首字母需要大写,该record.txt是否符合此要求? 如何纠正错误的地方?

    4、(练习正则表达式)有一个文件,文件名为output_1981.10.21.txt 。下面使用Python: 读取文件名中的日期时间信息,并找出这一天是周几。将文件改名为output_YYYY-MM-DD-W.txt (YYYY:四位的年,MM:两位的月份,DD:两位的日,W:一位的周几,并假设周一为一周第一天)

    以下是程序清单:

      1 #-*-coding:utf-8 -*-
      2 
      3 # (1) judge leap year
      4 def judge_leap_year(n):
      5     # if n%4 == 0 and n%100 != 0:
      6     #     return True
      7     # if n%100 == 0 and n%400 == 0:
      8     if (n%4 == 0 and n%100 != 0) or (n%100 == 0 and n%400 == 0):
      9         return True
     10     else:
     11         return False
     12 
     13 # ===================================================================
     14 # (2) computing the sum days of any day(**.**.**)
     15 def compute_year_counts(datestr):
     16     # deal with these case:
     17     # 2012.12.2
     18     # 2012/12/2
     19     # 2012-12-2
     20     if datestr.find('.') > 0: date = datestr.split('.')
     21     if datestr.find('/') > 0: date = datestr.split('/')
     22     if datestr.find('-') > 0: date = datestr.split('-')
     23 
     24     year = int(date[0])
     25     month = int(date[1])
     26     day = int(date[2])
     27     if (month < 1 or month > 12):
     28         print "the error month!"
     29         return -1
     30     if (day > 31):
     31         print "the error day!"
     32         return -1
     33 
     34     days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
     35 
     36     # nDays = 0
     37     # i = 1
     38     # while i < month:
     39     #     nDays += days[i-1]
     40     #     i = i + 1
     41     nDays = sum(days[i] for i in range(0, month - 1))
     42     if (judge_leap_year(year)):
     43         nDays += 1
     44     return nDays + day 
     45 
     46 datestring = raw_input("input the datetime info:-->")
     47 print compute_year_counts(datestring)
     48 
     49 # ===================================================================
     50 # (3) read and write file: use class if perfect!
     51 class UserProfier(object):
     52     def __init__(self, name, age, score):
     53         self.name = name
     54         self.age = age 
     55         self.score = score
     56 
     57 def read_file_and_anlysis(filetext):
     58     line_read = []
     59     user_scores = []
     60     has_invalid_name = False #the invalid name
     61 
     62     for line in filetext:
     63         if not line.startswith('#') and len(line.strip()) != 0:
     64             if line[0].islower():
     65                 line = line[0].upper() + line[1:]
     66                 has_invalid_name = True
     67             cur = line.strip().split(', ')
     68             user_scores.append(UserProfier(cur[0], int(cur[1]), int(cur[2])))
     69             line_read.append(line)
     70     # print the file
     71     print "print the file"
     72     for i in line_read:
     73         print i
     74     # statistic the score < 60
     75     print "users whose score lower 60:"
     76     for scores in filter(lambda s: s.score < 60 , user_scores):
     77         print scores.name
     78     # statistic the begin of name which is 'L'
     79     print "users whose name's begin is 'L':"
     80     for names in filter(lambda s: s.name.startswith('L'), user_scores):
     81         print names.name
     82     # statistic the total scores of all one
     83     print "the total scores of everyone:"
     84     allscores = map(lambda s:s.score, user_scores)
     85     print allscores
     86     print reduce(lambda x, y: x+y, allscores, 0)
     87 
     88 # open the file 
     89 with open("record.txt") as f:
     90     read_file_and_anlysis(f)
     91 
     92 # ===================================================================
     93 # (4) the useful example of regular expression
     94 import os, re, datetime
     95 
     96 filename = "output_1981.10.21.txt"
     97 
     98 date_time = re.search("(?P<year>d{4}).(?P<month>d{2}).(?P<day>d{2}).", filename)
     99 
    100 year = date_time.group('year')
    101 month = date_time.group('month')
    102 day = date_time.group('day')
    103 
    104 print year, month, day
    105 date = datetime.date(int(year), int(month), int(day))
    106 w = date.weekday() + 1
    107 W = str(w)
    108 os.rename(filename, "output_"+year+'-'+month+'-'+day+'-'+str(w)+".txt")
  • 相关阅读:
    [leetcode]5最长回文子串
    [leetcode]4寻找两个有序数组的中位数
    [leetcode]3无重复字符的最长字串
    [leetcode]2两数相加
    [leetcode]1两数之和
    [学习记录]堆
    [学习记录]平衡树
    [学习记录]二叉树删除
    [学习记录]排序算法总结
    创建mysql数据库
  • 原文地址:https://www.cnblogs.com/bakari/p/4213039.html
Copyright © 2020-2023  润新知