设为首页 收藏本站
查看: 2531|回复: 0

[经验分享] 【20】Python100例基础练习(4)

[复制链接]

尚未签到

发表于 2018-8-3 11:25:22 | 显示全部楼层 |阅读模式
  例16:
  题目:输出指定格式的日期
  方法1:
  

import datetime  

  
if __name__ == '__main__':
  

  # 输出今日日期,格式为 dd/mm/yyyy。更多选项可以查看 strftime() 方法
  print(datetime.date.today().strftime('%d/%m/%Y'))
  # 创建日期对象
  miyazakiBirthDate = datetime.date(1941, 1, 5)
  print(miyazakiBirthDate.strftime('%Y/%d/%m'))
  # 日期算术运算
  miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)
  print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))
  # 日期替换
  miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)
  print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))
  

  运行结果:
  22/12/2017
  1941/05/01
  06/01/1941
  05/01/1942
  方法2:
  

import time  

  
print (time.time())  #Python time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
  
print (time.localtime())  #作用是格式化时间戳为本地的时间。 如果sec参数未输入,则以当前时间为转换标准。 DST (Daylight Savings Time) flag (-1, 0 or 1) 是否是夏令时。
  
print (time.asctime())  #函数接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
  
print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()) )#'2017-06-27 13:00:57'
  
运行结果:
  
1513952857.059225
  
time.struct_time(tm_year=2017, tm_mon=12, tm_mday=22, tm_hour=22, tm_min=27, tm_sec=37, tm_wday=4, tm_yday=356, tm_isdst=0)
  
Fri Dec 22 22:27:37 2017
  
2017-12-22 22:27:37
  

  例17
  题目:输入一行字符,分别统计其中的字母,数字,空格和其他字符的个数。
  方法1:
  

input=input("输入任意字符: ")  
letters=[]
  
spaces=[]
  
number=[]
  
others=[]
  
for i in iter(input):
  if i.isalpha() == True: ###isalpha 检测字符串是否只由字母组成。
  letters.append(i)
  elif i.isspace()==True:  ###检测字符串是否只由空白字符组成
  spaces.append(i)
  elif i.isdigit()==True: ###检查字符串是否有整数组成
  number.append(i)
  else:
  others.append(i)
  
print("""
  
字母{},个数:{}
  
空格{},个数:{}
  
数字{},个数:{}
  
其它{},个数:{}
  
"""
  
.format(letters,len(letters),spaces,len(spaces),number,len(number),others,len(others)))
  

  运行结果:
  输入任意字符: 999@@@qqq   iii)))
  字母['q', 'q', 'q', 'i', 'i', 'i'],个数:6
  空格[' ', ' ', ' '],个数:3
  数字['9', '9', '9'],个数:3
  其它['@', '@', '@', ')', ')', ')'],个数:6
  方法2:用正则表达
  

import re ###正则表达式功能  
def statistics():
  Input=input("输入任意字符:")
  letters=0
  numbers=0
  spaces=0
  others=0
  for i in range(len(Input)):
  if re.match('\d',Input): #re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
  letters +=1
  elif re.match("[a-zA-Z]",Input):
  numbers +=1
  elif re.match("\s",Input):
  spaces +=1
  else:
  others +=1
  print("""
  字母个数:{}
  数字个数:{}
  空格个数:{}
  其它个数:{}
  """.format(letters,numbers,spaces,others))
  
statistics()
  

  运行结果:
  输入任意字符:qazwsx123#$%^&*()
  

字母个数:6  
数字个数:3
  
空格个数:2
  
其它个数:8
  

  例18
  题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
  程序分析:关键计算出每一项的值
  方法1:
  

T=0  
S=[]
  
n=int(input("n= "))
  
m=int(input("m= "))
  
for i in range(n):
  T = T+m   ##5,55,555,5555,55555
  m = m * 10 ##50,500,5000,50000
  S.append(T)
  print(T)
  
print(S,sum(S))
  

  运行结果:
  n= 5
  m= 5
  5
  55
  555
  5555
  55555
  [5, 55, 555, 5555, 55555] 61725
  方法2:
  

def suman(a, n):  if n<1:    return []
  s = [a]  ##s=4
  m = 10
  for i in range(0, n-1):
  s.append(s*m + a)  ###当i=0,s=4 .4*10+4 [4,44],当i=1时,s=44 ,44*10+4 [4,44,444]
  return sum(s), s
  

  
print(suman(4,5))
  

  运行结果:
  (49380, [4, 44, 444, 4444, 44444])
  例19
  题目:一个数如果恰好等于它的因子之和,这个数就称为&quot;完数&quot;。例如6=1+2+3.编程找出1000以内的所有完数。
  分析:可以参考例14
  方法:
  

for i in range(1,1001):  summ =0
  for j in range(1,i):
  if i%j==0:
  summ +=j
  if summ ==i :
  print(i)
  

  运行结果:
  6
  28
  496
  例20:
  题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
  程序分析:下落后反弹为x,下落反弹长度累加等于3x
  方法1:
  

def summ(x,y,n):  L=[]
  for i in range(1,n+1):  #从1开始到11,下落十次
  x *=y ###下落反弹后,弹起来的高度是下落高度的一半
  total=x*3 ###100下落反弹高度是50,x第一次记录五十加上下落高度等于150。所以这里total=x值*3=150
  L.append(total)
  print(x)
  print(sum(L)-x)###sum计算列表值。减去最后一次反弹高度。即为第十次落地时总里程。
  print(L)
  
summ(100,0.5,10)
  

  运行结果:
  0.09765625
  299.609375
  [150.0, 75.0, 37.5, 18.75, 9.375, 4.6875, 2.34375, 1.171875, 0.5859375, 0.29296875]
  方法2:第一次高度先记录,反弹在降落的里程等于2x
  

x=int(input("输入高度:"))  
y=int(input("输入反弹次数: "))
  
total=[]
  
l=[]
  
for i in range(1,y+1):  #次反弹数
  if i ==1:  #第一次下落,反弹高度 x*=0.5 记录到l列表
  total.append(x)
  else:
  total.append(x*2) ##反弹在次下落高度是相等的,这里乘以2
  x *=0.5
  l.append(x)
  
print(total)
  
print(l)
  
print("里程累计\033[31;1m{}\033[0mM".format(sum(total)))
  
print("第\033[31;1m%s\033[0m反弹高度%s"%(y,l[-1]))
  

  运行结果:
  输入高度:100
  输入反弹次数: 10
  [100, 100.0, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625]
  [50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625, 0.1953125, 0.09765625]
  里程累计299.609375M
  第10反弹高度0.09765625
  http://runoob.com

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-545846-1-1.html 上篇帖子: python virtualevn的安装与使用 下篇帖子: Python+Mysql生成zabbix统计数据(优化)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表