猫史档案馆


开源盛世

开源盛世

Lv.1

获赞:0收藏:0浏览:14作品收藏:0
回复帖子评论
上一页1 页 / 共 1下一页

【Python作品分享】有趣的代码【作品秀】 中回复

怎么不加分号

2020-01-17T10:40:46 点赞:0

【Python作品分享】ZCH计算器【作品秀】 中回复

给你一个GUI版的

from tkinter import *

m=0
def join(alpha):
    v.set(v.get()+alpha)
def inputnumbernot0(num):
    global v
    if not v.get()[-1] in '%':
        join(str(num))
def input0():
    global v
    if not v.get()[-1] in '%':
        join('0')
def inputfhnotjian(fh):
    global v
    if not v.get()[-1] in '+-×÷.':
        join(fh)
def inputjian():
    global v
    if not v.get()[-1] in '+-.':
        join('-')
def inputpoint():
    global v
    alpha = v.get()
    for i in range(len(alpha)-1, -1, -1):
        if alpha[i] in '+-×÷':
            break
    beta = alpha[i:]
    flag = ('.' not in beta)
    if flag:
        join('.')
def inputbfh():
    global v
    if not v.get()[-1] in '%+-×÷.':
        join('%')
def compile_(beta):
    alpha = beta
    alpha = alpha.replace('×','*')
    alpha = alpha.replace('÷','/')
    alpha = alpha.replace('%','*0.01')
    if alpha[-1] in '+-':
        alpha += '0'
    if alpha[-1] in '*/':
        alpha += '1'
    elif alpha == ' ':
        alpha=0
    return alpha
def getanswer():
    alpha = compile_(v.get())
    try:
        res = eval(alpha)
    except [ZeroDivisionError, SyntaxError]:
        res = 0
    if res == int(res):
        res = int(res)
    v.set(" " + str(res))
def getanswer_():
    alpha = compile_(v.get())
    try:
        res = eval(alpha)
    except [ZeroDivisionError, SyntaxError]:
        res = 0
    if res == int(res):
        res = int(res)
    return res
def clear():
    v.set(' ')
def backspace():
    v.set(v.get()[:-1])
def M(a=True):
    global m
    b = getanswer_()
    if a:
        m = b
    else:
        m = -b
    print(m)
def MC():
    global m
    m=0
def MR():
    if v.get()[-1] in '01234567890' and m>=0:
        join('+' + str(m))
    else:
        join(str(m))
root = Tk()
root.title('Calculator')
root.maxsize(300,300)

Label(root,height=4).grid(column=0,row=0)
v = StringVar()
v.set(' ')
Label(root, font=('Century Gothic',40),textvariable = v).place(x=10,y=0)

Button(root, text='    7    ',command=lambda:inputnumbernot0(7)).grid(column=0, row=1)
Button(root, text='    8    ', command=lambda: inputnumbernot0(8)).grid(column=1, row=1)
Button(root, text='    9    ', command=lambda: inputnumbernot0(9)).grid(column=2, row=1)
Button(root, text='    4    ', command=lambda: inputnumbernot0(4)).grid(column=0, row=2)
Button(root, text='    5    ', command=lambda: inputnumbernot0(5)).grid(column=1, row=2)
Button(root, text='    6    ', command=lambda: inputnumbernot0(6)).grid(column=2, row=2)
Button(root, text='    1    ', command=lambda: inputnumbernot0(1)).grid(column=0, row=3)
Button(root, text='    2    ', command=lambda: inputnumbernot0(2)).grid(column=1, row=3)
Button(root, text='    3    ', command=lambda: inputnumbernot0(3)).grid(column=2, row=3)
Button(root, text='     .    ',command = inputpoint).grid(column=0, row=4)
Button(root, text='    0    ',command = input0).grid(column=1, row=4)
Button(root, text='   %    ',command=inputbfh).grid(column=2, row=4)
Button(root, text='    +    ',command=lambda:inputfhnotjian('+')).grid(column=3, row=1)
Button(root, text='    -     ',command = inputjian).grid(column=3, row=2)
Button(root, text='    ×    ', command=lambda: inputfhnotjian('×')).grid(column=3, row=3)
Button(root, text='    ÷    ', command=lambda: inputfhnotjian('÷')).grid(column=3, row=4)
Button(root, text='     %s   ' % chr(9003), bg='yellow',command = backspace).grid(column=4, row=1)
Button(root, text='     C     ',bg='red',fg='white',command = clear).grid(column=4, row=2)
Button(root,text = '     =     ',height=3,bg='orange',fg='white',command=getanswer).grid(column=4,row=3,rowspan=2)
Button(root,text=' M+ ',command = M).grid(column=5,row=1)
Button(root, text=' M-  ',command=lambda:M(False)).grid(column=5, row=2)
Button(root, text=' MR ',command=MR).grid(column=5, row=3)
Button(root, text=' MC ',command=MC).grid(column=5, row=4)

mainloop()

2020-03-11T14:09:38 点赞:0