python

任意进制转换

2020-11-14  本文已影响0人  Python_Camp

​- 课程大类AGENDA -01 Scratch 初中高01 女性编程日周二02 Python 编程思维02 数字设计3D实践03 VEX IQ 理论和实战03 创客体验 免费预约04 ACM/NOI 算法04 物联网基础实践**▽ ****课程体系和进度****▽ **

丁丁猫python起跑班课程内容覆盖7个大模块,每个模块文末详细技能知识点。3个班的进度相同但讲的深度不同。课程设计中将感受到对逻辑课的高度重视,弥补国内K12编程和数学课程缺少的重要一环。

本文是课程内容的深入补充同时为了便于查看历史文章,单独汇总字典部分的用法。有部分同学进度赶不上,可以考虑跟下一轮基础班重修。

**- **编程实践和机器人课程中穿插必备的数学和物理

**- **全球顶级的STEM在线课程提供线下辅导

- 既能视频一对一学习,也有线下授课

▽ 关键技能点▽

% 递归 //学编程和学吃牛排

“老师教我刀叉怎么切牛肉,你以为好玩又好吃?”

“当然这么认为,不然我替你去学!”

“一上午对着一盘子,切了半天的空气”

“脑补了你对着空盘子认真到无聊的样子”

早已熟悉的进制操作,譬如:

十进制 to 八进制: oct()# 十进制 to 十六进制: hex()例如:100的16进制是64f 遇到新问题,16进制的64转换为17进制怎么办?没有现成的函数可用还好,通过任意进制转换需要通过10进制过渡可以实现。首先,16进制转换为10进制后为100 其次,100的17进制是5f结论:16进制的64转换为17进制是5f

两种写法:

第一种递归:简洁易懂

10进制 -> X进制转换过程。N是一个10进制的数,我们先N除以X的余数,即为不足X的部分为X进制的个位;接下来重复以上操作即可,依次得到高位的余数:

一直执行N//X, N%X,直到N//X==0为止!


import string
def convert(n,x,ans):   
#n为待转换的十进制数,x为进制,取值为2-32

    basefull = string.digits + string.ascii_lowercase
    if (n>=0) and (n<x):
        ans = basefull[n]+ans
        return ans
    else:
        ans = basefull[n % x] + ans
        return convert(n//x,x,ans)

第二种 while循环

import string

def count_digit(number, digit, base=10, from_base=10):

    digs = string.digits + string.ascii_lowercase

    num = int(number, from_base)

    out = ''

    while num:

        out = digs[num % base] + out

        num = num // base

    if not out:

        out = '0'

    return out.count(digit)

</pre>

第三种 import numpy

from numpy import base_repr

def count_digit(number, digit, base=10, from_base=10):

    return base_repr(int(number, from_base), base).lower()

1. Collections: List, Dictionary, Set, Tuple, Range, Enumerate, Iterator, Generator.
2. Types: Type, String, Regular_Exp, Format, Numbers, Combinatorics, Datetime
3. Syntax: Args, Inline, Closure, Decorator, Class, Duck_Types, Enum, Exceptions
4. System: Print, Input, Command_Line_Arguments, Open, Path, Command_Execution.
5. Data: CSV, JSON, Pickle, SQLite, Bytes, Struct, Array, MemoryView, D

上一篇 下一篇

猜你喜欢

热点阅读