使用Python编程出高级计算器,支持加减乘除、复合运算、三角函数、平方根、二进制转换、幂运算等高阶运算
生活不易,缅怀一下python课设,帮助下一个有缘人
注意:里面有两个python计算器的代码,从高阶到低阶应有尽有
第一个计算器功能:
实现简单的加减乘除,支持小数点和负数运算
实现复合运算和取余运算
实现sin,arcsin,ln,平方根,以及幂的运算
实现十进制到二进制转换
实现e,π的输出
可以复制粘贴剪切计算器中的数据
可以全部清除和只清除一个
计算器样式
代码
calculate.py
import re
from math import *# 将算式从字符串处理成列表,解决横杠是负号还是减号的问题
def formula_format(formula):"""解释参数类型:param formula: str"""formula = re.sub(' ', '', formula)# re.sub()在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串# 去掉算式中的空格s# 以 '横杠数字' 分割, 其中正则表达式:(\-\d+\.?\d*) 括号内:# \- 表示匹配横杠开头;\d+ 表示匹配数字1次或多次;\.?表示匹配小数点0次或1次;\d*表示匹配数字0次或多次。# []中的字符是任选择一个使用,括号(…)可以把(…)看出一个整体,经常与"+"、"*"、"?"的连续使用,对(…)部分进行重复.formula_list = [i for i in re.split('(\-[\d+,π,e]\.?\d*)', formula) if i]# re.split()将一个字符串按照正则表达式匹配结果进行分割,返回列表类型final_formula = [] # 最终的算式列表for item in formula_list:# 算式以横杠开头,则第一个数字为负数,横杠为负号# re.match()从一个字符串的开始位置起匹配正则表达式,返回match对象# 如果不是起始位置匹配成功的话,match()就返回none# $字符比配字符串的结尾位置if len(final_formula) == 0 and re.match('\-[\d+,π,e]\.?\d*$', item):final_formula.append(item)continue# 如果当前的算式列表最后一个元素的第一个位置是运算符['+', '-', '*', '/', '(', '%', '^'], # 则横杠为减号if len(final_formula) > 0:# 输出为none或者数字if re.match('[\+\-\*\/\(\%\^]$', final_formula[-1]):final_formula.append(item)continue# 按照运算符分割开item_split = [i for i in re.split('([\+\-\*\/\(\)\%\^\√])', item) if i]final_formula += item_splitreturn final_formula
# 判断是否是运算符,如果是返回True
def is_operator(e):""":param e: str:return: bool"""opers = ['+', '-', '*', '/', '(', ')', '%','^', '√', 'sin', 'arcsin', 'ln']return True if e in opers else False # 在for循环中嵌套使用if和else语句# 比较连续两个运算符来判断是压栈还是弹栈
def decision(tail_op, now_op):""":param tail_op: 运算符栈的最后一个运算符:param now_op: 从算式列表取出的当前运算符:return: 1代表弹栈运算,0代表弹出运算符栈最后一个元素'(',-1表示压栈"""# 定义4种运算符级别rate1 = ['+', '-']rate2 = ['*', '/', '%']rate3 = ['^', '√', 'sin', 'arcsin', 'ln']rate4 = ['(']rate5 = [')']if tail_op in rate1:if now_op in rate2 or now_op in rate3 or now_op in rate4:return -1 # 说明当前运算符优先级高于运算符栈的最后一个运算符,需要压栈else:return 1 # 说明当前运算符优先级等于运算符栈的最后一个运算符,需要弹栈运算elif tail_op in rate2:if now_op in rate3 or now_op in rate4:return -1else:return 1elif tail_op in rate3:if now_op in rate4:return -1else:return 1elif tail_op in rate4:if now_op in rate5:return 0 # '('遇上')',需要弹出'('并丢掉')',表明该括号内的算式已计算完成并将结果压入数字栈中else:return -1 # 只要栈顶元素为'('且当前元素不是')',都应压入栈中# 传入两个数字,一个运算符,根据运算符不同返回相应结果
def calculate(n1, n2, operator):""":param n1: float:param n2: float:param operator: + - * / % ^:return: float"""result = 0if operator == '+':result = n1 + n2if operator == '-':result = n1 - n2if operator == '*':result = n1 * n2if operator == '/':result = n1 / n2if operator == '%':result = n1 % n2if operator == '^':result = n1 ** n2return result# 括号内的算式求出计算结果后,计算√ ̄()、sin()或arcsin()
def gaojie(op_stack, num_stack): # 运算符栈,数字栈if op_stack[-1] == '√':# pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回从列表中移除的元素对象。# append() 函数可以向列表末尾添加元素op = op_stack.pop()num2 = num_stack.pop()num_stack.append(sqrt(num2))elif op_stack[-1] == 'sin':op = op_stack.pop()num2 = num_stack.pop()num_stack.append(sin(num2))elif op_stack[-1] == 'arcsin':op = op_stack.pop()num2 = num_stack.pop()num_stack.append(asin(num2))elif op_stack[-1] == 'ln':op = op_stack.pop()num2 = num_stack.pop()num_stack.append(log(num2))# 负责遍历算式列表中的字符,决定压入数字栈中或压入运算符栈中或弹栈运算
def final_calc(formula_list):""":param formula_list: 算式列表:return: 计算结果"""num_stack = [] # 数字栈op_stack = [] # 运算符栈for item in formula_list:operator = is_operator(item)# 压入数字栈if not operator:# π和e转换成可用于计算的值if item == 'π':num_stack.append(pi)elif item == '-π':num_stack.append(-pi)elif item == 'e':num_stack.append(e)elif item == '-e':num_stack.append(-e)else:num_stack.append(float(item)) # 字符串转换为浮点数# 如果是运算符else:while True:# 如果运算符栈为空,则无条件入栈if len(op_stack) == 0:op_stack.append(item)break# 决定压栈或弹栈tag = decision(op_stack[-1], item)# 如果是-1,则压入运算符栈并进入下一次循环if tag == -1:op_stack.append(item)break# 如果是0,则弹出运算符栈内最后一个'('并丢掉当前')',进入下一次循环elif tag == 0:op_stack.pop()# '('前是'√ ̄'、'sin'或'arcsin'时,对括号内算式的计算结果作相应的运算gaojie(op_stack, num_stack)break# 如果是1,则弹出运算符栈内最后一个元素和数字栈内最后两个元素elif tag == 1:if item in ['√', 'sin', 'arcsin']:op_stack.append(item)breakop = op_stack.pop()num2 = num_stack.pop()num1 = num_stack.pop()# 将计算结果压入数字栈并接着循环,直到遇到break跳出循环num_stack.append(calculate(num1, num2, op))# 大循环结束后,数字栈和运算符栈中可能还有元素的情况while len(op_stack) != 0:op = op_stack.pop()num2 = num_stack.pop()num1 = num_stack.pop()num_stack.append(calculate(num1, num2, op))result = str(num_stack[0])# 去掉无效的0和小数点,例:1.0转换为1if result[len(result) - 1] == '0' and result[len(result) - 2] == '.':result = result[0:-2]return resultif __name__ == '__main__':#formula = "2 * ( 3 - 5 * ( - 6 + 3 * 2 / 2 ) )"formula = "e"formula_list = formula_format(formula)result = final_calc(formula_list)print("算式:", formula)print("计算结果:", result)
Calculator.py
from tkinter import *
from functools import partial
#partial() 函数允许你给一个或多个参数设置固定的值,减少接下来被调用时的参数个数。
from calculate import *# 生成计算器主界面
def buju(root):menu = Menu(root) # 创建主菜单#新建一个空的菜单,将原menu菜单的menu属性指定为submune1,即filemenu1为menu的下拉菜单#tearoff属性:通常情况下,菜单可以被撕掉,第一个位置(位置0)在选择列表中被删除元素占据# 并且额外的选择从位置1开始。# 如果设置了tearoff=0,菜单将不会有一个tearoff特性,并且选择将从位置0开始添加。submenu1 = Menu(menu, tearoff=0) # 分窗,0为在原窗,1为点击分为两个窗口#add_cascade()方法:通过将给定的菜单与父菜单相关联,创建一个新的分层菜单。menu.add_cascade(label='编辑', menu=submenu1)# 添加子选项(label参数为显示内容)#add_command (options)方法:将菜单项添加到菜单中。submenu1.add_command(#创建了一个名为“XX”的标签,按下后执行bianji/编辑函数,label='复制', command=lambda: bianji(entry, 'copy')) # 添加命令submenu1.add_command(label='剪切', command=lambda: bianji(entry, 'cut'))submenu1.add_command(label='粘贴', command=lambda: bianji(entry, 'paste'))submenu2 = Menu(menu, tearoff=0)menu.add_cascade(label='查看', menu=submenu2)submenu2.add_command(label='帮助', command=lambda: chakan(entry, 'help'))submenu2.add_command(label='作者', command=lambda: chakan(entry, 'author'))root.config(menu=menu)# 重新配置,添加菜单label = Label(root, width=36, height=1, bd=5, bg='white', anchor='se',textvariable=label_text) # 标签,可以显示文字或图片label.grid(row=0, columnspan=5) # 布局器,向窗口注册并显示控件#rowspan:设置单元格纵向跨越的列数#Entry(根对象, [属性列表]),实现添加输入框,width设置显示宽度#bd设置按钮的边框大小,bg设置背景色,front设置字体及大小#justify设置多行文本的对其方式entry = Entry(root, width=23, bd=5, bg='white',justify="right", font=('微软雅黑', 12)) # 文本框(单行)entry.grid(row=1, column=0, columnspan=5, sticky=N + W +S + E, padx=5, pady=5) # 设置控件周围x、y方向空白区域保留大小#cursor为鼠标悬停光标myButton = partial(Button, root, width=5, cursor='hand2', activebackground='#90EE90') # 偏函数:带有固定参数的函数button_sin = myButton(text='sin', command=lambda: get_input(entry, 'sin(')) # 按钮button_arcsin = myButton(text='arcsin', command=lambda: get_input(entry, 'arcsin('))button_exp = myButton(text='e', command=lambda: get_input(entry, 'e'))button_ln = myButton(text='ln', command=lambda: get_input(entry, 'ln('))button_xy = myButton(text='x^y', command=lambda: get_input(entry, '^'))button_sin.grid(row=2, column=0)button_arcsin.grid(row=2, column=1)button_exp.grid(row=2, column=2)button_ln.grid(row=2, column=3)button_xy.grid(row=2, column=4)button_shanyige = myButton(text='←', command=lambda: backspace(entry)) # command指定按钮消息的回调函数button_shanquanbu = myButton(text=' C ', command=lambda: clear(entry))button_zuokuohao = myButton(text='(', command=lambda: get_input(entry, '('))button_youkuohao = myButton(text=')', command=lambda: get_input(entry, ')'))button_genhao = myButton(text='√x', command=lambda: get_input(entry, '√('))button_shanyige.grid(row=3, column=0)button_shanquanbu.grid(row=3, column=1)button_zuokuohao.grid(row=3, column=2)button_youkuohao.grid(row=3, column=3)button_genhao.grid(row=3, column=4)button_7 = myButton(text=' 7 ', command=lambda: get_input(entry, '7'))button_8 = myButton(text=' 8 ', command=lambda: get_input(entry, '8'))button_9 = myButton(text=' 9 ', command=lambda: get_input(entry, '9'))button_chu = myButton(text=' / ', command=lambda: get_input(entry, '/'))button_yu = myButton(text='%', command=lambda: get_input(entry, '%'))button_7.grid(row=4, column=0)button_8.grid(row=4, column=1)button_9.grid(row=4, column=2)button_chu.grid(row=4, column=3)button_yu.grid(row=4, column=4)button_4 = myButton(text=' 4 ', command=lambda: get_input(entry, '4'))button_5 = myButton(text=' 5 ', command=lambda: get_input(entry, '5'))button_6 = myButton(text=' 6 ', command=lambda: get_input(entry, '6'))button_cheng = myButton(text=' * ', command=lambda: get_input(entry, '*'))button_jiecheng = myButton(text='二进制', command=lambda: jinzhi(entry))button_4.grid(row=5, column=0)button_5.grid(row=5, column=1)button_6.grid(row=5, column=2)button_cheng.grid(row=5, column=3)button_jiecheng.grid(row=5, column=4)button_1 = myButton(text=' 1 ', command=lambda: get_input(entry, '1'))button_2 = myButton(text=' 2 ', command=lambda: get_input(entry, '2'))button_3 = myButton(text=' 3 ', command=lambda: get_input(entry, '3'))button_jian = myButton(text=' - ', command=lambda: get_input(entry, '-'))button_dengyu = myButton(text=' \n = \n ', command=lambda: calculator(entry))button_1.grid(row=6, column=0)button_2.grid(row=6, column=1)button_3.grid(row=6, column=2)button_jian.grid(row=6, column=3)button_dengyu.grid(row=6, column=4, rowspan=2) # rowspan:设置单元格横向跨越的行数button_pai = myButton(text=' π ', command=lambda: get_input(entry, 'π'))button_0 = myButton(text=' 0 ', command=lambda: get_input(entry, '0'))button_xiaoshudian = myButton(text=' . ', command=lambda: get_input(entry, '.'))button_jia = myButton(text=' + ', command=lambda: get_input(entry, '+'))button_pai.grid(row=7, column=0)button_0.grid(row=7, column=1)button_xiaoshudian.grid(row=7, column=2)button_jia.grid(row=7, column=3)# 对文本框中的算式或答案进行复制、剪切或粘贴
def bianji(entry, argu):""":param entry: 文本框:param argu: 按钮对应的值"""if argu == 'copy':entry.event_generate("<<Copy>>")elif argu == 'cut':entry.event_generate("<<Cut>>")clear(entry)elif argu == 'paste':entry.event_generate("<<Paste>>")# 查看使用帮助和作者信息
def chakan(entry, argu):root = Tk()root.resizable(0, 0)text = Text(root, width=20, height=2, bd=5, bg='#FFFACD', font=('微软雅黑', 12))text.grid(padx=5, pady=5)if argu == 'help':root.title('帮助')text.insert(INSERT, '哈你的希望落空了吧\n')text.insert(INSERT, '这里可没有帮助')elif argu == 'author':root.title('作者')text.insert(INSERT, 'Author:许许\n')text.insert(INSERT, 'Time:2022.06.17')# 删除最后一次输入内容
def backspace(entry):entry.delete(len(entry.get()) - 1) # 删除文本框的最后一个输入值# 删除所有输入内容和显示内容
def clear(entry):entry.delete(0, END) # 删除文本框的所有内容label_text.set('')# 点击计算器输入按钮后向文本框中添加内容
def get_input(entry, argu):formula = entry.get()for char in formula:if '\u4e00' <= char <= '\u9fa5':clear(entry) # 删除文本框中的汉字显示,减少手动删除操作entry.insert(INSERT, argu) # 使用END时,键盘敲入和按键输入组合操作会出错# 十进制整数转换为二进制整数
def jinzhi(entry):try:formula = entry.get()if re.match('\d+$', formula):number = int(formula)cunchu = [] # 放置每次除以2后的余数result = ''while number:cunchu.append(number % 2)number //= 2 # 整数除法,返回商while cunchu:result += str(cunchu.pop()) # 将所有余数倒置得到结果clear(entry)entry.insert(END, result)label_text.set(''.join(formula + '='))else:clear(entry)entry.insert(END, '请输入十进制整数')except:clear(entry)entry.insert(END, '出错')# 点击“=”后进行计算
def calculator(entry):try:formula = entry.get()# 输入内容只是数字或π或e时,仍显示该内容if re.match('-?[\d+,π,e]\.?\d*$', formula):label_text.set(''.join(formula + '='))return# 输入内容是算式时,显示其计算结果result = final_calc(formula_format(formula))clear(entry)entry.insert(END, result) # 将结果输出到文本框中label_text.set(''.join(formula + '='))except:clear(entry)entry.insert(END, '出错')if __name__ == '__main__':root = Tk() # 生成窗口root.title('简易计算器') # 窗口的名字root.resizable(0, 0) # 窗口大小可调性,分别表示x,y方向的可变性global label_text # 定义全局变量label_text = StringVar()buju(root)root.mainloop() # 进入消息循环(必需组件),否则生成的窗口一闪而过
注:这个代码我能说的都在备注里
第二个计算器:
实现简单的加减乘除,支持小数点和负数运算
实现复合运算和取余运算
可以全部清除和只清除一个
计算机样式
代码:
calculate1.py
import tkinter
import tkinter.fontclass Calculator(object):def __init__(self):self.all_press_lists = []self.is_press = Falseself.is_press_num = Falseself.root = tkinter.Tk()self.result = tkinter.StringVar() # 显示输入的数字及结果self.record = tkinter.StringVar() # 显示计算过程def main(self):self.root.minsize(300, 550)self.root.title('计算器')input_bg = "#393943"num_fg = "#DCDCDC"btn_fg = "#909194"btn_bg = "#22222C"btn_w = 75btn_h = 70my_font = tkinter.font.Font(family='微软雅黑', size=20) # 设置字体self.result.set(0)self.record.set('')# 显示版label = tkinter.Label(self.root, font=my_font, bg=input_bg, bd='9', fg=num_fg, anchor='se',textvariable=self.record)label.place(width=300, height=120)label2 = tkinter.Label(self.root, font=my_font, bg=input_bg, bd='9', fg=num_fg, anchor='se',textvariable=self.result)label2.place(y=120, width=300, height=80)# 第一行btn_ac = tkinter.Button(self.root, text='c', font=my_font, bg=btn_bg, fg=btn_fg, bd=0,command=lambda: self.press_compute('AC'))btn_ac.place(x=btn_w * 0, y=200 + btn_h * 0, width=btn_w, height=btn_h)btn_back = tkinter.Button(self.root, text='←', font=my_font, bg=btn_bg, fg=btn_fg, bd=0,command=lambda: self.press_compute('b'))btn_back.place(x=btn_w * 1, y=200 + btn_h * 0, width=btn_w, height=btn_h)btn_per = tkinter.Button(self.root, text='%', font=my_font, bg=btn_bg, fg=btn_fg, bd=0,command=lambda: self.press_compute('%'))btn_per.place(x=btn_w * 2, y=200 + btn_h * 0, width=btn_w, height=btn_h)btn_divi = tkinter.Button(self.root, text='÷', font=my_font, bg=btn_bg, fg=btn_fg, bd=0,command=lambda: self.press_compute('/'))btn_divi.place(x=btn_w * 3, y=200 + btn_h * 0, width=btn_w, height=btn_h)# 第二行btn7 = tkinter.Button(self.root, text='7', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('7'))btn7.place(x=btn_w * 0, y=200 + btn_h * 1, width=btn_w, height=btn_h)btn8 = tkinter.Button(self.root, text='8', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('8'))btn8.place(x=btn_w * 1, y=200 + btn_h * 1, width=btn_w, height=btn_h)btn9 = tkinter.Button(self.root, text='9', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('9'))btn9.place(x=btn_w * 2, y=200 + btn_h * 1, width=btn_w, height=btn_h)btn_mul = tkinter.Button(self.root, text='×', font=my_font, bg=btn_bg, fg=btn_fg, bd=0,command=lambda: self.press_compute('*'))btn_mul.place(x=btn_w * 3, y=200 + btn_h * 1, width=btn_w, height=btn_h)# 第三行btn4 = tkinter.Button(self.root, text='4', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('4'))btn4.place(x=btn_w * 0, y=200 + btn_h * 2, width=btn_w, height=btn_h)btn5 = tkinter.Button(self.root, text='5', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('5'))btn5.place(x=btn_w * 1, y=200 + btn_h * 2, width=btn_w, height=btn_h)btn6 = tkinter.Button(self.root, text='6', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('6'))btn6.place(x=btn_w * 2, y=200 + btn_h * 2, width=btn_w, height=btn_h)btn_sub = tkinter.Button(self.root, text='-', font=my_font, bg=btn_bg, fg=btn_fg, bd=0,command=lambda: self.press_compute('-'))btn_sub.place(x=btn_w * 3, y=200 + btn_h * 2, width=btn_w, height=btn_h)# 第四行btn1 = tkinter.Button(self.root, text='1', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('1'))btn1.place(x=btn_w * 0, y=200 + btn_h * 3, width=btn_w, height=btn_h)btn2 = tkinter.Button(self.root, text='2', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('2'))btn2.place(x=btn_w * 1, y=200 + btn_h * 3, width=btn_w, height=btn_h)btn3 = tkinter.Button(self.root, text='3', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('3'))btn3.place(x=btn_w * 2, y=200 + btn_h * 3, width=btn_w, height=btn_h)btn_add = tkinter.Button(self.root, text='+', font=my_font, bg=btn_bg, fg=btn_fg, bd=0,command=lambda: self.press_compute('+'))btn_add.place(x=btn_w * 3, y=200 + btn_h * 3, width=btn_w, height=btn_h)# 第五行btn0 = tkinter.Button(self.root, text='0', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('0'))btn0.place(x=btn_w * 0, y=200 + btn_h * 4, width=btn_w * 2, height=btn_h)btn_point = tkinter.Button(self.root, text='.', font=my_font, bg=btn_bg, fg=num_fg, bd=0,command=lambda: self.press_num('.'))btn_point.place(x=btn_w * 2, y=200 + btn_h * 4, width=btn_w, height=btn_h)btn_equ = tkinter.Button(self.root, text='=', bg='#982425', font=my_font, fg=num_fg, bd=0,command=lambda: self.press_equal())btn_equ.place(x=btn_w * 3, y=200 + btn_h * 4, width=btn_w, height=btn_h)self.root.mainloop()# 按下数字键def press_num(self, num):if self.is_press is False:passelse:self.result.set(0)self.is_press = False# 判断界面的数字是否为0old_num = self.result.get()if old_num == '0':self.result.set(num)else:new_num = old_num + numself.result.set(new_num)# 按下运算键def press_compute(self, sign):num = self.result.get()self.all_press_lists.append(num)self.all_press_lists.append(sign)self.is_press = Trueif sign == 'AC': # 按下'AC',清空列表内容,显示0self.all_press_lists.clear()self.result.set(0)if sign == 'b': # 按下退格,当前数字逐步减一a = num[0:-1]self.all_press_lists.clear()self.result.set(a)# 获取运算结果函数def press_equal(self):cur_num = self.result.get()self.all_press_lists.append(cur_num)compute_str = ''.join(self.all_press_lists)try:calculate_result = eval(compute_str)except:calculate_result = 'bad parameter'self.result.set(calculate_result) # 显示结果self.record.set(compute_str + "=") # 显示运算过程self.all_press_lists.clear() # 清空列表内容if __name__ == '__main__':my_calculator = Calculator()my_calculator.main()
虽然但是其实我还有两个计算器的代码,太长了就不发了,我只是一个平平无奇的搬运工,要是想要可以私信我
使用Python编程出高级计算器,支持加减乘除、复合运算、三角函数、平方根、二进制转换、幂运算等高阶运算相关推荐
- python编程设计高级_Python编程高级技巧| 选择好的名称
点击标题下「异步图书」可快速关注 大部分标准库在构建时都要考虑可用性.例如,内置类型的使用是很自然的,其设计非常易于使用.在这种情况下,Python可以与你开发程序时所思考的伪代码进行比较.大部分代码 ...
- web加减乘除法c#_c#实战 计算器(支持加减乘除括号的混合计算)
c#计算器 支持 -*/()的混合运算 对负号不支持. 原理:将点击的按钮赋给inputStr 然后对inputStr分析.计算.看懂代码的重要前提是你有一定的算法基础 前缀.中缀.后缀表达式 和数据 ...
- Python自定义豆瓣电影种类,排行,点评的爬取与存储(高阶上)
Python 2.7 IDE Pycharm 5.0.3 Firefox 47.0.1 豆瓣电影系列: - 基础抓取(限于"豆瓣高分"选项电影及评论)请看↓ Python自定义豆瓣 ...
- Python编程进阶 高级变量(看完就会了)
文章目录 一.简介 1.目标 2.知识点回顾 3.非数字型变量的特点 二.字符串 1.下标索引 2.切片 (1)作用 (2)索引的顺序和倒序 (3)实例 3.find 4.index 5.count ...
- Python编程及高级数据分析
一.介绍(11月22日) 小问题找函数 大问题找包 python数据分析常用的包 数据库实现的功能的在panda包里面找 其中M\S\P是数据可视化工具 深度学习使用的包是pytorch(facebo ...
- python编程设计高级_Python高级应用程序设计
一.主题式网络爬虫设计方案(15分) 1.主题式网络爬虫名称 链家二手房成交信息(福州地区) 2.主题式网络爬虫爬取的内容与数据特征分析 本爬虫程序爬取链家网福州二手房的成交信息,分别从户型.面积.成 ...
- 用python找出400多万次KDJ金叉死叉,胜率有多高?附代码
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投Z,了解行业研究方向 这是邢不行第90期量化小课堂分享 作者 l 邢不行 不知道大家有没有发现 ...
- Python从入门到实践电子书,python编程入门到实践pdf
<Python编程从入门到实践>txt下载在线阅读,求百度网盘云资源 <Python编程>([美]埃里克·马瑟斯(Eric Matthes))电子书网盘下载免费在线阅读资源链接 ...
- python编程入门指南怎么样-Python 应该怎么学?
对于编程语言的学习,我一向推崇理论+动手实践的学习方法,书本只能告诉你每一个专业名词.语法的概念及用法,而动手实践能够让你更加深刻理解它们的含义,让你对语言的学习进一步得到升华. 大学期间唯一和编程相 ...
最新文章
- intellij中的 iml文件与web.xml 文件分别是干什么的
- Unity持久化存储之PlayerPrefs的使用
- linux每日命令(17):which命令
- Hopsan -- 液压、电力等行业的仿真开源软件
- LeetCode - Easy - 696. Count Binary Substrings
- [Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容...
- 【Python】用tkinter做一个采色器
- 怎样进行大数据的入门级学习
- JAVA面向对象——继承
- linux python mysqldb安装包,linux环境下python中MySQLdb模块的安装方法
- 视频压缩工具FFmpeg的使用(中)
- QQ 静态截图程序模拟实现
- linux启动hbase_HBase集群环境配置
- 三极管放大电路基础知识
- L1-061 新胖子公式 (10 分)
- ppt讲解html,HTML简介讲解.ppt
- WebADI_WebADI常用代码bne_integrator_utils
- .net mvc 利用分部视图局部刷新.
- 广和通眼中的5G时代通信智能化变革
- 手淘商品详情api接口|淘宝商品详情API接口文档
热门文章
- 2010Execl冻结多行
- 华为鸿蒙系统落地,鸿蒙系统正式落地!华为养的“这只狼”,终于派上用场了?...
- 图标、协同办公等新素材上线,100%实用!
- 远程办公实践丨需重视以人为本的员工激励设计
- 【算法随记五】使用FFT变换自动去除图像中严重的网纹。
- Kafka安装与简介
- 分期利息计算——考虑免息日期和多利率设定的思路设计和代码实现
- Spring batch系列文章(一)——介绍和入门
- 批量解压多个zip压缩包并将解压出来的文件以该压缩包的名称重命名
- 怎样串联两台无线路由器:[1]二级路由设置