任意进制转换
- 课程大类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