关于进制转换作业的一些心得

       作业本来要求是做十进制转二、八、十六进制的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('')

 

      第二个程序就完全是通用的了,然后搞了几个小时我也麻了,一个这么弱智的问题让我搞得这么复杂,不说了我是菜狗。

相关文章:

  • 2021-07-27
  • 2021-09-21
  • 2022-01-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
猜你喜欢
  • 2022-12-23
  • 2021-08-14
  • 2021-06-25
  • 2021-07-19
  • 2021-07-13
  • 2022-02-16
  • 2021-05-03
相关资源
相似解决方案