关于进制转换作业的一些心得
作业本来要求是做十进制转二、八、十六进制的python程序,但是给定伪代码的套路可以用于所有进制转换,所有可以说是一个十进制转其他进制的程序。
其实一开始我不是按着伪代码中那种给字符排序的套路来构思的,所以就产生了我的第一个程序,这个程序运用的是数学逻辑,但是只能转换十进制及以下的进制。如果遇到十以上的进制,就会出现字符和数字相结合的情况,鉴于我python没学多少,所以暂时解决不了这个问题,便到此为止了。下面是第一个程序的代码:
a=eval(input('Enter the new base: ')) #a是所输入的进制
b=eval(input('Enter the number to be converted: ')) #b是要转换的十进制数
d=1 #d是商
e=-1
f=0
c=0
while d!=0:
c=b%a #c是余数
d=b//a
e=e+1
f=c*(10**e)+f
b=d
print(f)
input('')
然后我开始构思第二个程序,也就是用老师给定的伪代码来编写,其体现的主要思路是字符的排序,这可以有效解决前一个程序再十以上进制中遇到的难题。但是这个程序我构思了很久,走了不少弯路。一开始我想在第一个程序上做修改,运用c=’%d’%c的方法将数学计算中的余数转化为字符形式,结果发现这种转化只是暂时的,都怪我基础没打好,原理没弄通。其间各种调试,外加头铁,一个多小时就过去了,结果还是推到重来。
跳出第一个程序的束缚之后感觉好多了,立马就想到了从头到尾直接引用字符串的点子,虽然鉴于能力这个程序看着及其低级:
a=eval(input('Enter the new base: ')) #a是所输入的进制
b=eval(input('Enter the number to be converted: ')) #b是要转换的十进制数
d=1 #d是商
e=-1
f=''
c=0
while d!=0:
c=b%a #c是余数
d=b//a
if c==0:
f='0'+f
if c==1:
f='1'+f
if c==2:
f='2'+f
if c==3:
f='3'+f
if c==4:
f='4'+f
if c==5:
f='5'+f
if c==6:
f='6'+f
if c==7:
f='7'+f
if c==8:
f='8'+f
if c==9:
f='9'+f
if c==10:
f='A'+f
if c==11:
f='B'+f
if c==12:
f='C'+f
if c==13:
f='D'+f
if c==14:
f='E'+f
if c==15:
f='F'+f
b=d
print(f)
input('')
第二个程序就完全是通用的了,然后搞了几个小时我也麻了,一个这么弱智的问题让我搞得这么复杂,不说了我是菜狗。