zoukankan      html  css  js  c++  java
  • 001-定义电子日历类

    一 题目描述

    链接:https://www.nowcoder.com/questionTerminal/e4c67097cdb242d9a3f38b7cfe839396?answerType=1&f=discussion
    来源:牛客网

    KiKi学习了面向对象技术,学会了通过封装属性(变量)和行为(函数)定义类,现在他要设计一个电子日历类TDate。
    它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,要求:
    (1)带有默认形参值的构造函数,默认值为0, 0, 0;
    (2)输出日期函数,用“日/月/年”格式输出日期;
    (3)设置日期函数,从键盘输入年、月、日。

    输入描述:一行,三个整数,用空格分隔,分别表示年、月、日。

    输出描述:一行,用“日/月/年”格式输出日期。

    示例1:输入:2019 12 30
                 输出:30/12/2019
     
    二 代码详解
    方法一:
    1 import sys
    2 y , m ,d = map(int,sys.stdin.readline().split())
    3 print('%d/%d/%d'%(d,m,y))

    思路:用户输入数据之后,先通过split()函数将用户输入的数据通过空格分割成包含年、月、日的列表,再通过map函数将列表内的字符串类型的元素转换成整形,然后分别赋值(或者说贴标签更合适)。

    (我没想到还能用:y,m,d这种方式进行赋值,写的时候一个一个输入的。。。。还有脑袋里也没有通过分片的方式得到各自的值这种思路,所以没做出来,我好菜。。)

    1 python的标准输入

    (1)input、raw_input()——交互式输入

    • Python 3.x 中 input() 函数可以实现提示输入,python 2.x 中要使用 raw_input()
    • 举例:
    • 1 >>> import sys
      2 >>> line = input()
      3 1 2 3 4 5
      4 >>> line
      5 '1 2 3 4 5'

    (2)sys.stdin https://www.cnblogs.com/itwhite/p/12327548.html

    • 功能:使用 sys.stdin 可以获取标准输入的文件句柄对象
    • 应用:
      • sys.stdin.readline() :读取一行,包括换行符
      • sys.stdin.read(n) :用来指定用户输入字符的长度,即表示读取n个字节
      • sys.stdin.read():读取到文件尾
    • 示例:
    • 1 >>> line = sys.stdin.readline()
      2 1 2 3 4 5
      3 >>> line
      4 '1 2 3 4 5
      '
      5 
      6 >>> line = sys.stdin.read(3)
      7 1 2 3 4 5
      8 >>> line
      9 '1 2'

    (3)sys.stdin.readline()

    • 功能:用来获取一行标准输入,包括行末的换行符,input()不包括换行符
    • 特点:其默认输入的格式是字符串,如果是int,float类型则需要强制转换
    • 变形:
      • sys.stdin.readline().strip(' '):strip(' ')表示删除尾随的换行符 ,否则输出是“字符串+ ”的形式
      • sys.stdin.readline().strip():strip()表示删除任何前导或尾随的空格字符
      • sys.stdin.readline().split():若是多输入,split()默认是以空格分隔,返回一个包含多个字符串的列表
    • 举例:
    •  1 >>> import sys
       2 >>> line = sys.stdin.readline().strip('
      ')
       3 1 2 3 4 5
       4 >>> line
       5 '1 2 3 4 5'
       6 
       7 >>> line = sys.stdin.readline().strip()
       8     1 2 3 4 5
       9 >>> line
      10 '1 2 3 4 5'
      11 
      12 >>> line = sys.stdin.readline().split()
      13 1 2 3 4 5
      14 >>> line
      15 ['1', '2', '3', '4', '5']
      16 >>>

     

    (4)map()函数https://www.cnblogs.com/luoxun/p/13294912.html

    • 功能:map() 会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
    • 应用:此处用来进行强制类型转换
    • 举例:
    •  1 >>> line = sys.stdin.readline().split()
       2 1 2 3 4 5
       3 >>> line
       4 ['1', '2', '3', '4', '5']
       5 >>> a,b,c,d,e = map(int,line)
       6 >>> a
       7 1
       8 >>> type(a)
       9 <class 'int'>
      10 >>>

    2 代码变形

     1 >>> import sys
     2 >>> y,m,d = map(int,sys.stdin.readline().split())
     3 2020 7 18
     4 >>> print('%d/%d/%d' % (d,m,y))
     5 18/7/2020
     6 
     7 >>> import sys
     8 >>> y,m,d = map(int,input().split())
     9 2020 7 18
    10 >>> print(f'{d}/{m}/{y}')
    11 18/7/2020
    12 >>>

    说明input和sys.stdin.readline()相当于两种不同的输入方式,它们的区别在于input输入方式可以输出提示信息(交互式输入)并且不会读入换行符;而sys.stdin.readline()不能输出提示信息,但会读入换行符。

     方法二:
     1 class TDate():
     2  
     3     def __init__(self,month=0,day=0,year=0):
     4         self.month = month
     5         self.day = day
     6         self.year = year
     7          
     8     def getDate(self):
     9         print("{0}/{1}/{2}".format(self.day,self.month,self.year))
    10          
    11 y,m,d = map(int,input().split())
    12 date = TDate(m,d,y)
    13 date.getDate()

    类的内容我暂时还没学到,等学到之后再解释。。。

     
     
     
     
     
     
     
     
     
  • 相关阅读:
    【每日一具15】听说你的数据误删了???
    Python数据挖掘 | 实战案例之预测糖尿病
    【每日一具14】2D图片转3DGif动画(2D To 3D Gif) 【快速收藏】
    Python预测糖尿病
    【每日一具14】2D图片转3DGif动画(2D To 3D Gif) 【快速收藏】
    【每日一具13】你还在烦恼没有视频会员?
    c--switch 分支语句
    教你三种jQuery框架实现元素显示及隐藏动画方式
    一文你带快速认识Vue-Router路由
    AI如何提升10倍筛药效率?6月18日华为云携手中科院上海药物所揭开谜底
  • 原文地址:https://www.cnblogs.com/luoxun/p/13336723.html
Copyright © 2011-2022 走看看