或许大家已经较为熟练掌握Python基础了,跃跃欲试地想编程一个属于自己的应用,但又无从下手。这次带来的.py完全可以满足萌新的要求,如果向打包成.exe,这里推荐一位B站up主的视频供大家参考.py转.exe(学不会随便嫖)_哔哩哔哩_bilibili
目录
1.简要介绍
程序功能很简单,可根据输入的数值与精度得到对应进制的转化数字。主要使用的是python自带的tkinter库内的函数。
2.分步详解
2.1转化函数(二进制转化函数)
#Num为输入数字,Time控制输出位数
def bin_Translate(Num, Time):
#得到Num的整数部分
Num_Int = int(Num)
#创建空列表临时存放值
x = ""
#创建空列表存放最终值
finnal = ""
#Num整数部分为0
if Num_Int == 0:
x = x + "0"
#进入循环,除2取余
while Num_Int > 0:
x = x + str(Num_Int % 2)
Num_Int = int(Num_Int / 2)
#逆向将x列表复制到finnal列表中
total = len(x)
while total >= 1:
finnal = finnal + x[total - 1]
total = total - 1
#去除Num小数部分
Num_Ap = Num - int(Num)
#控制循环因子
time = 1
if Num_Ap != 0:
#添加小数点
finnal = finnal + '.'
#进入循环,乘2取整
while time <= Time:
Num_Ap = Num_Ap * 2
if Num_Ap >= 1:
finnal = finnal + '1'
Num_Ap = Num_Ap - 1
else:
finnal = finnal + '0'
time = time + 1
#返回finnal列表
return finnal
2.2界面设计
root = Tk()
#设置窗口标题
root.title('进制转换器')
#设置窗口大小
root.geometry('400x300')
root.resizable(False, False)
var = StringVar()
#设置标签
label_1 = Label(root, text="请输入待转换的数值(可输入小数)")
#设置输入框
entry_1 = Entry(root)
label_2 = Label(root, text="请输入转化后的进制(二进制与八进制可选)")
entry_2 = Entry(root)
label_3 = Label(root, text="请输入转化后的位数(对整数无效)")
entry_3 = Entry(root)
#设置输出
label = Label(root, textvariable=var, width=20, justify='left')
#定义输出函数
def show():
#取出输入框值
E1 = float(entry_1.get())
E2 = int(entry_2.get())
E3 = int(entry_3.get())
if E2 == 2:
var.set(bin_Translate(E1, E3))
elif E2 == 8:
var.set(oct_Translate(E1, E3))
else:
var.set('进制错误')
#设置输出按钮
button = Button(root, text='转换', command=show)
label_1.pack()
entry_1.pack()
label_2.pack()
entry_2.pack()
label_3.pack()
entry_3.pack()
button.pack()
label.pack()
#设置推出按钮
Button(root, text="退出程序", command=root.quit).pack()
root.mainloop()
3.最终代码
from tkinter import *
#Num为输入数字,Time控制输出位数
def bin_Translate(Num, Time):
#得到Num的整数部分
Num_Int = int(Num)
#创建空列表临时存放值
x = ""
#创建空列表存放最终值
finnal = ""
#Num整数部分为0
if Num_Int == 0:
x = x + "0"
#进入循环,除2取余
while Num_Int > 0:
x = x + str(Num_Int % 2)
Num_Int = int(Num_Int / 2)
#逆向将x列表复制到finnal列表中
total = len(x)
while total >= 1:
finnal = finnal + x[total - 1]
total = total - 1
#去除Num小数部分
Num_Ap = Num - int(Num)
#控制循环因子
time = 1
if Num_Ap != 0:
#添加小数点
finnal = finnal + '.'
#进入循环,乘2取整
while time <= Time:
Num_Ap = Num_Ap * 2
if Num_Ap >= 1:
finnal = finnal + '1'
Num_Ap = Num_Ap - 1
else:
finnal = finnal + '0'
time = time + 1
#返回finnal列表
return finnal
def oct_Translate(Num, Time):
Num_Int = int(Num)
x = ""
finnal = ""
if Num_Int == 0:
x = x + "0"
while Num_Int > 0:
x = x + str(Num_Int % 8)
Num_Int = int(Num_Int / 8)
total = len(x)
while total >= 1:
finnal = finnal + x[total - 1]
total = total - 1
Num_Ap = Num - int(Num)
time = 1
if Num_Ap != 0:
finnal = finnal + '.'
while time <= Time:
Num_Ap = Num_Ap * 8
if Num_Ap >= 1:
finnal = finnal + str(int(Num_Ap))
Num_Ap = Num_Ap - int(Num_Ap)
else:
finnal = finnal + '0'
time = time + 1
return finnal
root = Tk()
#设置窗口标题
root.title('进制转换器')
#设置窗口大小
root.geometry('400x300')
root.resizable(False, False)
var = StringVar()
#设置标签
label_1 = Label(root, text="请输入待转换的数值(可输入小数)")
#设置输入框
entry_1 = Entry(root)
label_2 = Label(root, text="请输入转化后的进制(二进制与八进制可选)")
entry_2 = Entry(root)
label_3 = Label(root, text="请输入转化后的位数(对整数无效)")
entry_3 = Entry(root)
#设置输出
label = Label(root, textvariable=var, width=20, justify='left')
#定义输出函数
def show():
#取出输入框值
E1 = float(entry_1.get())
E2 = int(entry_2.get())
E3 = int(entry_3.get())
if E2 == 2:
var.set(bin_Translate(E1, E3))
elif E2 == 8:
var.set(oct_Translate(E1, E3))
else:
var.set('进制错误')
#设置输出按钮
button = Button(root, text='转换', command=show)
label_1.pack()
entry_1.pack()
label_2.pack()
entry_2.pack()
label_3.pack()
entry_3.pack()
button.pack()
label.pack()
#设置推出按钮
Button(root, text="退出程序", command=root.quit).pack()
root.mainloop()
4.结语
若有疑问,欢迎向博主私信、评论。