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()

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

 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/luoxun/p/13336723.html