鱼C论坛

 找回密码
 立即注册
查看: 3385|回复: 4

[技术交流] python小练习(046):消失的硬盘容量

[复制链接]
发表于 2016-12-11 21:15:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python小练习(045):Flask实战 -- 解析VIP电影播放器,传送门

我们经常发现,购买的硬盘上标注的容量比系统显示的要少。

比如,你买了100MB的硬盘,插到电脑上,操作系统却显示硬盘的大小只有95MB,这5MB消失了。

这是因为硬盘的制造商认为"一千" 是1000,但是操作系统认为"一千"是1024。有几个描述硬盘大小的单位,他们是byte(B), kilobyte(KB), megabyte(MB), gigabyte(GB), terabyte(TB)。

现在的硬盘大多以GB和TB作单位的为多,那么就请你设计一套转换程序,输入标称的硬盘容量大小,例如“1TB”或“500GB”,输出实际硬盘容量。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-11 21:24:05 | 显示全部楼层
这题很简单,给新手练练手吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-1 10:52:17 | 显示全部楼层
  1. bz={'TB':12,'GB':9,'MB':6,'KB':3}
  2. while True:
  3.     x=input('输入大小,输入exit退出:')
  4.     if x =='exit':exit()
  5.     dw=x[-2:]
  6.     sz=x[:-2]
  7.     if sz.isdigit() and dw in bz:
  8.         b=int(sz)*10**bz[dw]
  9.         tb=b//1024**4
  10.         b=b-tb*1024**4
  11.         gb=b//1024**3
  12.         b=b-gb*1024**3
  13.         mb=b//1024**2
  14.         b=b-mb*1024**2
  15.         kb=b//1024
  16.         b=b-kb*1024
  17.         print('共计有%dTB %dGB %dMB %dKB %dB。'%(tb,gb,mb,kb,b))        
  18.     else:
  19.         print('输入有误,请重新输入!')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-12 15:36:56 | 显示全部楼层
  1. def actual_capacity(x):
  2.     if x[-2:] == 'TB':
  3.         x = int(x[:-2])*(1000**4)/(1024**4)
  4.         return '实际容量为%sTB'%round(x,1)
  5.     if x[-2:] == 'GB':
  6.         x = int(x[:-2])*(1000**3)/(1024**3)
  7.         return '实际容量为%sGB'%round(x,1)
  8.    
  9. x = input('请输入硬盘的标注容量(GB,TB):')
  10. print(actual_capacity(x))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-13 08:56:57 | 显示全部楼层
本帖最后由 JAY饭 于 2018-2-13 09:01 编辑
  1. def C(s):
  2.         t = ['KB','MB','GB','TB','B']
  3.         for i in t:
  4.                 if i in s:
  5.                         c = s.find(i)
  6.                         break
  7.         int1 = s[:c]
  8.         s1 = s[c:]
  9.         return int1,s1

  10. def Z(s):
  11.         (a,b) = C(s)
  12.         a = int(a)
  13.         a /= 1.024
  14.         if a<1024 or b == 'TB':
  15.                 print('硬盘容量是%d%s'%(a,b))
  16.         else:
  17.                 a /= 1024
  18.                 t1 = ['B','KB','MB','GB','TB']
  19.                 for i in range(len(t1)):
  20.                         if b == t1[i] and b != 'TB':
  21.                                 b = t1[i+1]
  22.                                 break
  23.                 print('硬盘容量是%d%s'%(a,b))

  24. t = '10785KB'
  25. Z(t)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-2 13:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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