写在前面:文章中的例子均来自于学校发布的大计基作业,整理在此处以作备忘复习之用

1.一个数如果倒过来还是这个数,则这样的数称为回文数。例如,12321 倒过来还是 12321,所以,12321 是回文数。1234,倒过来是 4321,它不是回文数。现输入一个整数,判断它是否为回文数。

程序如图:

x=input("请输入您要验证的整数:")
y=len(x)
z=0

for i in range(y):
    if x[i]==x[y-1-i]:
        z=1
    else:
        z=0

if z==1:
    print("该整数是回文数")
else:
    print("该整数不是回文数")

结果示例:

============== RESTART: C:\Users\python小程序\1.py =============
请输入您要验证的整数:1122332211
该整数是回文数

2.编写函数,将十进制整数转换为二进制形式(用字符串表示),返回二进制形式的字符串,在主程序中输入十进制整数,调用函数转换为二进制(字符串形式),显示二进制数。例如,输入:12,输出:1100,要求不能使用Python中的转换函数直接转换,要自己通过除以2取余的运算进行转换。

程序如图:

def L(x):
    a=0
    b=x
    c=x
    while b>=1:
        b=b//2
        a=a+1
        
    d=[]
    e=0
    for i in range(a):
        e=c%2
        d.append(str(int(e)))
        c=(c-e)/2
    d.reverse()
    
    f="".join(d)

    result=f
    return result

x=int(input("请输入您要转化的十进制整数:"))
print("其对应的二进制数为:",L(x))

结果示例:

============== RESTART: C:\Users\python小程序\1.py =============
请输入您要转化的十进制整数:10
其对应的二进制数为: 1010

============== RESTART: C:\Users\python小程序\1.py =============
请输入您要转化的十进制整数:1000
其对应的二进制数为: 1111101000

============== RESTART: C:\Users\python小程序\1.py =============
请输入您要转化的十进制整数:15
其对应的二进制数为: 1111

3.编写函数,将十进制小数转换为二进制小数,返回二进制小数的字符串形式,最多保留到小数点后4位。编写主程序,输入小数,调用函数转换为二进制显示。例如:输入:0.625,输出:0.101,输入:.8125,则输出:0.1101。注意,需要使用乘以2取整的方法。

程序如图:

def M(x):
    a=x
    b=[]
    while True:
        a=a*2
        if a>=1.0:
            b.append("1")
#此处的1需要用""转化为字符串,如不转化则会将一个整型数编入列表,而整型数本身无法完成从列表到字符串的转化。
            a=a-1
            continue
        elif 0<a<1.0:
            b.append("0")
            continue
        else:
            break
    b.insert(0,"0.")
    c="".join(b)

    result=c
    return result
    
x=float(input('请输入您要转化的十进制小数:'))
print('其对应的二进制数为:',str(M(x)))

结果示例:

============== RESTART: C:\Users\python小程序\1.py =============
请输入您要转化的十进制小数:0.1
其对应的二进制数为: 0.0001100110011001100110011001100110011001100110011001101

============== RESTART: C:\Users\python小程序\1.py =============
请输入您要转化的十进制小数:0.8125
其对应的二进制数为: 0.1101

4.整合上面两题,写出十进制实数转换为二进制实数的程序。如输入:12.625,则输出:1100.101

程序如图:

def LM(x):
    L=int(x)
    M=float(x-L)
    
    #考虑整数部分
    a1=0
    b1=L
    c1=L
    while b1>=1:
        b1=b1//2
        a1=a1+1

    d1=[]
    e1=0
    for i in range(a1):
        e1=c1%2
        d1.append(str(int(e1)))
        c1=(c1-e1)/2
    d1.reverse()

    #考虑小数部分
    a2=M
    b2=[]
    while True:
        a2=a2*2
        if a2>=1.0:
            b2.append("1")
            a2=a2-1
            continue
        elif 0<a2<1.0:
            b2.append("0")
            continue
        else:
            break
    b2.insert(0,".")

    b=d1+b2

    result="".join(b)
    return result

x=float(input('请输入您要转化的十进制数:'))
print('其对应的二进制数为:',LM(x))

结果示例:

============== RESTART: C:\Users\python小程序\1.py =============
请输入您要转化的十进制数:123.8125
其对应的二进制数为: 1111011.1101