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

【作品介绍】
一个计算器
【作品源代码】
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