1.十进制转二进制函数

输入一个十进制数,输出其对应的二进制数。要求编写函数实现十进制整数转为二进制形式(本题不能用Python的转换函数直接转换,要自己通过除2取余运算转换。)

输入:
10输出:
1010

# 整数十进制转二进制
def dec_to_bin(num):
    ##########Begin############
    a_bin=""
    while num>=1:
        a_bin=str(num%2)+a_bin
        num=int(num/2)
    return int(a_bin)
    ##########End##############

num=int(input())
print(dec_to_bin(num))

2.十进制小数转换成二进制小数

输入一个十进制小数,输出其二进制小数形式。要求编写函数,将十进制小数转换为二进制小数,返回二进制小数的字符串形式,结果最多保留小数点后8位。

输入1:
0.125 输出1:
0.001 例1:
输入2:
0.3 输出2:
0.01001100

# 小数十进制转二进制
def dec_to_bin(num):
    ##########Begin############
    num_bin=""
    while num!=int(num):
        num=num*2
        num_bin=num_bin+str(int(num))
        num=num-int(num)
    num_bin="0."+num_bin
    if len(num_bin)>10:
        num_bin=num_bin[:10]
    return num_bin
    ##########End##############

num=float(input())
print(dec_to_bin(num))

3.带整数的小数进制转换

输入一个十进制带整数部分的小数,输出其二进制形式。要求编写函数,将十进制小数转换为二进制小数,返回二进制小数的字符串形式,结果最多保留小数点后8位。

输入1:
12.625输出1:
1100.101输入2:
8.3输出2:
1000.01001100

# 带整数的小数十进制转二进制
def dec_to_bin(num):
    ##########Begin############
    zs=int(num)
    xs=num-zs

    zs_bin=bin(zs)[2:]
    xs_bin=""
    while xs!=int(xs):
        xs=xs*2
        xs_bin=xs_bin+str(int(xs))
        xs=xs-int(xs)
    
    if len(xs_bin)>8:
        xs_bin=xs_bin[:8]

    a_bin=zs_bin+"."+xs_bin


    return a_bin

    ##########End##############
num=float(input())
print(dec_to_bin(num))

4.重字判断

输入一组汉字,编写函数判断是否有重字,并输出重字

输入1:
我我爱北北京天天门我输出1:
True我北天输入2:
西安市输出2:
False ``

# 重字判断
def repetitive_judgment(num):
    ##########Begin############
    chongfu=[]
    for i in range(len(num)-1):
        for j in range(i+1,len(num)):
            if num[i]==num[j]:
                chongfu.append(num[i])
    formatchongfu=list(set(chongfu))
    return formatchongfu
    ##########End##############
num=input()
chongfu=repetitive_judgment(num)
if len(chongfu)>0:
    print("True")
    print(''.join(chongfu))
else:
    print("False")
    print()

5.计算器

设计一个计算器,编写函数完成十进制数的加、减、乘、除、求余数、乘方、开方、对数算术运算。

输入的第一个数代表要选择的操作,后两个数代表要计算的数x,y。第1个数为1表示加,为2表示减,为3表示乘,为4表示除,为5表示求余数,为6表示乘方(x的y次方),为7表示开方(x的y次开方),为8表示求对数(x以y为底的对数)。x,y都为整数,结果保留两位小数

输入1:
8 5 2输出1:
2.32输入2:
3 4 3输出2:
12.00

# 加法操作
def add(x, y):
    ##########Begin############
    return x+y
    ##########End##############

# 减法操作
def subtract(x, y):
    ##########Begin############
    return x-y
    ##########End##############

# 乘法操作
def multiply(x, y):
    ##########Begin############
    return x*y
    ##########End##############

# 除法操作
def divide(x, y):
    ##########Begin############
    return x/y
    ##########End##############

# 取余操作
def remainder(x, y):
    ##########Begin############
    return x%y
    ##########End##############

# 乘方操作
def involution(x, y):
    ##########Begin############
    return x**y
    ##########End##############

# 开方操作
def extract(x, y):
    ##########Begin############
    return x**(1/y)
    ##########End##############

# 对数操作
def mylog(x, y):
    ##########Begin############
    import math
    return math.log(x,y)
    ##########End##############

a,b,c=map(int,input().split())
if a==1:
    print("%.2f" %add(b,c))
elif a==2:
    print("%.2f" %subtract(b,c))
elif a==3:
    print("%.2f" %multiply(b,c))
elif a==4:
    print("%.2f" %divide(b,c))
elif a==5:
    print("%.2f" %remainder(b,c))
elif a==6:
    print("%.2f" %involution(b,c))
elif a==7:
    print("%.2f" %extract(b,c))
elif a==8:
    print("%.2f" %mylog(b,c))

6.布尔运算

编写函数求两个4位二进制数的非、与、或、异或运算的结果。

输出结果分别是二个数取非,两个数与,两个数或,两个数异或

输入:
1000 0101输出:
01111010000011011101

# 布尔运算
def boolean_calculation(num1, num2):
    ##########Begin############
    def not1(x):
        new=""
        for i in range(len(x)):
            if int(x[i])==1:
                new=new+"0"
            else:
                new=new+"1"
        return new

    def and12(x,y):
        new=""
        for i in range(len(x)):
            if int(x[i])+int(y[i])>1:
                new=new+"1"
            else:
                new=new+"0"
        return new

    def or12(x,y):
        new=""
        for i in range(len(x)):
            if int(x[i])+int(y[i])>=1:
                new=new+"1"
            else:
                new=new+"0"
        return new

    def nor12(x,y):
        new=""
        for i in range(len(x)):
            if int(x[i])+int(y[i])==1:
                new=new+"1"
            else:
                new=new+"0"
        return new

    return not1(num1),not1(num2),and12(num1,num2),or12(num1,num2),nor12(num1,num2)
    ##########End##############

num1,num2=input().split()
a,b,c,d,e=boolean_calculation(num1, num2)
print(a)
print(b)
print(c)
print(d)
print(e)

7.二进制异或

编写函数实现“异或”运算(不允许使用系统的异或运算符,不允许使用二进制转换函数)

输入:
1011110101100111输出:
101111010110011111011010

# 异或运算
def exclusive_or(num1, num2):
    ##########Begin############
    new=""
    for i in range(len(num1)):
        if int(num1[i])+int(num2[i])==1:
            new=new+"1"
        else:
            new=new+"0"
    return new

    ##########End##############

num1=input()
num2=input()
print(num1)
print(num2)
print(exclusive_or(num1, num2))

8.搭建模拟与、或、非门

输入异或门两个输入端的值,输出异或门输出端的值。要求编写函数,模拟与、或、非门,利用模拟的与、或、非门,搭建异或门,利用搭建的异或门,显示异或门的真值表。

输入:
0 0输出:
0

# 搭建异或门
def gate_xor(a, b):
    ##########Begin############
    def feimen(x):
        if x=="1":
            return "0"
        else:
            return "1"
    
    def huomen(x,y):
        if int(x)+int(y)>=1:
            return "1"
        else:
            return "0"
        
    def yumen(x,y):
        if int(x)+int(y)==2:
            return "1"
        else:
            return "0"
    
    return huomen(yumen(a,feimen(b)),yumen(feimen(a),b))

    ##########End##############
a,b=input().split()
print(gate_xor(a, b))