猫史档案馆


【Python作品分享】计算器3.29.1.2024723.Vscode【作品秀】

用户:小红球来了小红球来了查看:2 回复:1 评论:2 创建时间:2024-07-29T13:57:35


【作品展示】

center_image

 

【作品介绍】

一个计算器

 

【作品源代码】

import PySimpleGUI as sg
import math
import fractions
def simp1(answer):
    answer_float = float(answer)
    fraction = fractions.Fraction.from_float(answer_float)
    return fraction

def simp2(answer):
    while_float = 0
    answer = str(answer)
    done_number = ''
    num1 = answer[2]
    x = 3
    while True:
        num2 = answer[x]
        done_number += '9'
        x += 1
        if num1 == num2:
            while_float = 1
            up_number = answer[2:x-1]
            break
    answer = float(up_number),'/',float(done_number)
    return(answer,while_float)

def process_decimal(answer):
    int_number, float_number = str(answer).split('.')
    first_digit, second_digit = float_number[0], float_number[1]
    current_position = 0 
    while current_position < len(float_number) - 1: 
        if first_digit == second_digit: 
            if current_position == 0: 
                if int(float_number[current_position - 1]) < 5: 
                    float_number = float_number[current_position + 2:] 
                    break 
                else: 
                    int_number = str(int(int_number) + 1) 
                    float_number = float_number[current_position + 2:] 
                    break 
            else: 
                float_number = float_number[:current_position] + float_number[current_position + 2:] 
                break 
        else: 
            current_position += 1 
            first_digit, second_digit = float_number[current_position], float_number[current_position + 1] 
    if float_number:
        answer =int_number + '.' + float_number
        return answer 
    else:
        answer = int_number
        return answer

def button(text):
    return sg.B(text,pad = (2,2),size = (5,1),font = ('黑体',18),button_color = ('black'))

num_list = []
layout = [
    [sg.T('',key = '—SHOW—')],
    [sg.In('',size = (24,2),font = ('黑体',28),key = '—INPUT—')],
    [button(i)for i in ['AC','(',')','%','×','mrc','in']],
    [button(i)for i in ['1','2','3','+','!','m','log10','/']],
    [button(i)for i in ['4','5','6','-','||','m-','cos','cosh']],
    [button(i)for i in ['7','8','9','X','^','e','sin','sinh']],
    [button(i)for i in ['0','.','=','÷','√','π','tan','tanh']]
]
window = sg.Window('计算器3.29.1.2024723.Vscode.py', layout)
while True:
    event, values = window.read()
    print(event)
    if event == None:
        break
    if event in list('1234567890+-().'):
        window['—INPUT—'].update(values['—INPUT—']+event)
        window['—SHOW—'].update('')
    if event == 'X':
        window['—INPUT—'].update(values['—INPUT—']+'*')
        window['—SHOW—'].update('')
    if event == '÷':
        window['—INPUT—'].update(values['—INPUT—']+'/')
        window['—SHOW—'].update('')
    if event == '^':
        window['—INPUT—'].update(values['—INPUT—']+'**')
        window['—SHOW—'].update('')
    if event == '√':
        window['—INPUT—'].update(values['—INPUT—']+'math.sqrt()')
        window['—SHOW—'].update('')
    if event == '!':
        window['—INPUT—'].update(values['—INPUT—']+'math.factorial()')
        window['—SHOW—'].update('')
    if event == '||':
        window['—INPUT—'].update(values['—INPUT—']+'abs()')
        window['—SHOW—'].update('')
    if event == 'π':
        window['—INPUT—'].update(values['—INPUT—']+'3.141592653589793238462喵33832795')
        window['—SHOW—'].update('')
    if event == 'e':
        window['—INPUT—'].update(values['—INPUT—']+'2.7182818284590452353602874713527')
        window['—SHOW—'].update('')
    if event == 'in':
        window['—INPUT—'].update(values['—INPUT—']+'math.log()')
        window['—SHOW—'].update('')
    if event == 'log10':
        window['—INPUT—'].update(values['—INPUT—']+'math.log10()')
        window['—SHOW—'].update('')
    if event == 'sin':
        window['—INPUT—'].update(values['—INPUT—']+'math.sin()')
        window['—SHOW—'].update('')
    if event =='cos':
        window['—INPUT—'].update(values['—INPUT—']+'math.cos()')
        window['—SHOW—'].update('')
    if event =='tan':
        window['—INPUT—'].update(values['—INPUT—']+'math.tan()')
        window['—SHOW—'].update('')
    if event == 'sinh':
        window['—INPUT—'].update(values['—INPUT—']+'math.asin()')
        window['—SHOW—'].update('')
    if event =='cosh':
        window['—INPUT—'].update(values['—INPUT—']+'math.acos()')
        window['—SHOW—'].update('')
    if event =='tanh':
        window['—INPUT—'].update(values['—INPUT—']+'math.atan()')
        window['—SHOW—'].update('')
    if event == '×':  
        if len(values['—INPUT—']) > 0:  
            window['—INPUT—'].update(values['—INPUT—'][:-1])  
            window['—SHOW—'].update('')  
    if event == '%':
        try:
            window['—INPUT—'].update(eval(values['—INPUT—']+'/100'))
        except:
            window['—INPUT—'].update('')
            window['—SHOW—'].update('输入有误,请重新输入')
    if event == '/':
        try:
            try:
                result, while_float = simp2(answer)  
                if while_float == 1:  
                    window['—INPUT—'].update(result)  
                else:
                    window['—INPUT—'].update('')  
                    window['—SHOW—'].update(f"无法将输入的数字转换为分数,原始输入是: {answer}")  
            except:
                window['—INPUT—'].update(simp1(answer))
        except:
            window['—INPUT—'].update('')
            window['—SHOW—'].update('输入有误,请重新输入')
    if event == '=':
        try:
            answer = eval(values['—INPUT—'])   
            window['—INPUT—'].update(answer)
        except:
            window['—INPUT—'].update('')
            window['—SHOW—'].update('输入有误,请重新输入')
    if event == 'm':
        try:
            window['—SHOW—'].update('已存数')   
            wait_number = values['—INPUT—']
        except:
            window['—SHOW—'].update('输入有误')              
    if event == 'mrc':
        try:  
            window['—INPUT—'].update(values['—INPUT—']+wait_number)
        except:
            window['—SHOW—'].update('未存有数')
    if event == 'm-':
        wait_number = ''
        window['—SHOW—'].update('已删除存数') 
    if event == 'AC':
        window['—INPUT—'].update('')
        window['—SHOW—'].update('')

window.close()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
没有昵称才怪呢没有昵称才怪呢

抄我的工作室名字干嘛

点赞0


评论