栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

头歌(educoder)计算机信息表示(除二取余)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

头歌(educoder)计算机信息表示(除二取余)

**没废话,直接答案**
  • 第1关:准备工作:字符串
  • 第2关:实现除二取余方法
  • 第3关:改进程序
  • 第4关:递归函数
  • 第5关:算法复杂度
  • 第6关:除二取余方法的递归实现
  • 第7关:递归程序的改进
  • 第8关:Python对进制转换的支持

第1关:准备工作:字符串
ID = input()                #ID表示学号
########## Begin ##########
if (len(ID)!=8):                       #如果学号不是8位
    print('不是8位')
if (ID[0:2]!= "20"):                       #如果学号未以20开头
    print('未以20开头')
if ID[2:4] not in ["18","19","20"]:                       #如果学号3、4位不正确
    print('第3、4位不正确')
for x in ID:                      #对于学号中的每一位x
    if (x not in '0123456789'):                   #如果x不是数字字符
        print(x, '不是数字')
########## End ##########
print('检查完成')

第2关:实现除二取余方法
########## Begin ##########
def DecToBin_int(d):
    b=""
    while (d!=0):
       b=str(d%2)+b
       d=d//2
    return b
########## End ##########
d = int(input())
print(DecToBin_int(d))

第3关:改进程序
########## Begin ##########
def DecToBin_int(d):
    b = ''
    if d==0: 
        return 0
    elif d>0:
        while d!=0:
          b = str(d%2)+b
          d = d//2
        return b
    else:
        d=-d
        while d!=0:
          b = str(d%2)+b
          d = d//2
        return '-'+b
########## End ##########
d = int(input())
print(DecToBin_int(d))

第4关:递归函数
########## Begin ##########
def F(n):
    if n == 1:
       return 1
    elif n==0:
        return 0
    else:
       return F(n-1)+F(n-2) 
########## End ##########
n = int(input())
print(F(n))

第5关:算法复杂度
cache = [1, 1]  #用于存储已算出的项,第i号元素对应第i+1项,最开始时存放了第1、2项
def F(n): 
    if len(cache)>=n:      #先到列表中查询,若列表中包含了F(n)
        return cache[n-1]  #则直接返回F(n)
    else:                  #否则计算F(n)
        Fn = F(n-1)+F(n-2) #计算F(n)的方法与之前相同
        cache.append(Fn)   #将计算结果存入列表,以便后续直接使用
        return Fn          #返回计算结果

n = int(input())
print(F(n))

第6关:除二取余方法的递归实现
########## Begin ##########
def f(d):
    if d == 1:
        return '1'
    else:  
        return f(d//2) + str(d%2)
########## End ##########
d = int(input())
print(f(d))
第7关:递归程序的改进
def f(d):
    if d==1:
        return '1'
    elif d>0:
        return f(d//2)+str(d%2)
########## Begin ##########
    if d==0:
        return 0
    if d<0:
        d=-d;
        return '-'+f(d//2)+str(d%2)
########## End ##########
d = int(input())
print(f(d))
第8关:Python对进制转换的支持
d = int(input())
########## Begin ##########
b=bin(d)
b = b.replace( '0b', '' )
########## End ##########
print(b)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号