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
输出:0111
1010
0000
1101
1101
# 布尔运算
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.二进制异或
编写函数实现“异或”运算(不允许使用系统的异或运算符,不允许使用二进制转换函数)
输入:10111101
01100111
输出:10111101
01100111
11011010
# 异或运算
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))