『壹』 用python正則表達式替換字元串問題 我用python寫一個計算器,想用正則表達式將字元串中的一些內容替換,
先用正則表達式 sin((d+(.d+)?)) 取第一捕獲組的數據
把sin(45)中的角度值angle匹配出來,然後計算出sin(angle)的值value,
最後用正則表達式 "sin("+angle+")" 替換成String.valueOf(value) //value的字元串形式
我給你一個完整的java語言的例子,你看看吧.
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassAA{
publicstaticvoidmain(String[]args){
Strings="1+2*3-(5/6)+sin(45)-ln(100)";
Stringregex="sin\((\d+(\.\d+)?)\)";
Patternp=Pattern.compile(regex);
Matcherm=p.matcher(s);
while(m.find()){
Stringangle=m.group(1);//取出sin函數的角度值
doubled=Double.parseDouble(angle);//把角度值轉換成double型
doublevalue=Math.sin(d/180*Math.PI);//把角度值轉換成弧度值然後計算sin函數值
s=s.replaceAll("sin\("+angle+"\)",String.valueOf(value));//把相應的sin(45)字元串替換成sin函數值
System.out.println(s);//輸出結果,你也可以在程序最後輸出結果,也就是在while循環完成後輸出結果
}
}
}
運行結果
1+2*3-(5/6)+0.7071067811865475-ln(100)
『貳』 如何使用python編程寫一個加法計算器
1、打開idle。點擊file,然後點擊new file.這是創建一個新的文件。
新建一個文件之後,我們輸入第一行代碼,使用print函數,在屏幕上列印一句話,其中字元串要使用雙引號,輸入法要使用英文輸入法,如果符號使用中文輸入法輸入,就會出現錯誤。print("我們做一個兩個整數相加的計算題!")
同理,在屏幕上列印第二句話,與用戶交互,提醒用戶輸入第一個數。
第三行調用input函數,將用戶輸入的內容賦值給a,這時候a收到的是字元串信息,所以需要下一步把字元串轉換為整型。這輸入計算機處理數據指令。
然後依照以上的步驟寫第二個加數,和最後輸出的和,注意最後一句列印結果時,引號內部是字元串形式,x+y是數值形式,所以需要在中間加上一個逗號。如果不加逗號就會提示錯誤信息,以上就是所有的程序編寫完成,下一步就開始保存,命名,運行。如圖所示
運行結果如下:
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於如何使用python編程寫一個加法計算器的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
『叄』 用PYTHON2做個計算器,只要加減乘除
# encoding: UTF-8
from Tkinter import *
class App:
def __init__(self,master):
frame=Frame(master)
frame.pack()
self.v = StringVar()
self.v.set(" ")
self.entry1=Entry(frame,text="")
self.entry1.grid(row=0,columnspan=2)
self.label0=Label(frame,text="Answer:").grid(row=1,column=0)
self.label1=Label(frame,textvariable=self.v).grid(row=1,column=1)
self.button1=Button(frame,text=" = ",command=self.inputnumber).grid(row=2)
#self.hi_there.pack(side=LEFT)
def inputnumber(self):
self.v.set(eval(self.entry1.get()))
root=Tk()
app=App(root)
root.mainloop()
以上代碼拷貝下來保存為一個py文件,然後運行就好。
注意沒有任何錯誤檢查的。
『肆』 python計算器
python計算器實現:
wx.TextCtrl(文本輸入控制項),這個作為計算器的顯示屏,點擊數字時用AppendText方法將數字添加至文本末尾,要取出數字時用GetValue方法,點擊運算符時要將文本框中的數字清空(先存儲)用Clear方法然後還有將操作符保存,點擊等號後要將第二個操作數存儲,然後用int方法將字元串轉換為數字,計算後用SetValue方法將結果送入文本框,具體代碼如下:
importwx
#beginwxGlade:extracode
#endwxGlade
classMyFrame(wx.Frame):
def__init__(self,*args,**kwds):
#beginwxGlade:MyFrame.__init__
kwds["style"]=wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self,*args,**kwds)
self.text_ctrl_1=wx.TextCtrl(self,-1,"",style=wx.TE_READONLY)
self.button_37=wx.Button(self,-1,"1")
self.button_38=wx.Button(self,-1,"2")
self.button_39=wx.Button(self,-1,"3")
self.button_40=wx.Button(self,-1,"+")
self.button_41=wx.Button(self,-1,"4")
self.button_42=wx.Button(self,-1,"5")
self.button_43=wx.Button(self,-1,"6")
self.button_44=wx.Button(self,-1,"-")
self.button_46=wx.Button(self,-1,"7")
self.button_45=wx.Button(self,-1,"8")
self.button_47=wx.Button(self,-1,"9")
self.button_48=wx.Button(self,-1,"x")
self.button_49=wx.Button(self,-1,"C")
self.button_50=wx.Button(self,-1,"0")
self.button_51=wx.Button(self,-1,"=")
self.button_52=wx.Button(self,-1,"/")
self.__set_properties()
self.__do_layout()
self.Bind(wx.EVT_BUTTON,self.bu1,self.button_37)
self.Bind(wx.EVT_BUTTON,self.bu2,self.button_38)
self.Bind(wx.EVT_BUTTON,self.bu3,self.button_39)
self.Bind(wx.EVT_BUTTON,self.bu_plus,self.button_40)
self.Bind(wx.EVT_BUTTON,self.bu4,self.button_41)
self.Bind(wx.EVT_BUTTON,self.bu5,self.button_42)
self.Bind(wx.EVT_BUTTON,self.bu6,self.button_43)
self.Bind(wx.EVT_BUTTON,self.bu_min,self.button_44)
self.Bind(wx.EVT_BUTTON,self.bu7,self.button_46)
self.Bind(wx.EVT_BUTTON,self.bu8,self.button_45)
self.Bind(wx.EVT_BUTTON,self.bu9,self.button_47)
self.Bind(wx.EVT_BUTTON,self.bu_mul,self.button_48)
self.Bind(wx.EVT_BUTTON,self.bu_clear,self.button_49)
self.Bind(wx.EVT_BUTTON,self.bu0,self.button_50)
self.Bind(wx.EVT_BUTTON,self.bu_result,self.button_51)
self.Bind(wx.EVT_BUTTON,self.bu_chu,self.button_52)
#endwxGlade
self.Show(True)
def__set_properties(self):
#beginwxGlade:MyFrame.__set_properties
self.SetTitle("PythonCalculaterbyCYG")
self.text_ctrl_1.SetMinSize((400,50))
self.button_37.SetMinSize((100,50))
self.button_38.SetMinSize((100,50))
self.button_39.SetMinSize((100,50))
self.button_40.SetMinSize((100,50))
self.button_41.SetMinSize((100,50))
self.button_42.SetMinSize((100,50))
self.button_43.SetMinSize((100,50))
self.button_44.SetMinSize((100,50))
self.button_46.SetMinSize((100,50))
self.button_45.SetMinSize((100,50))
self.button_47.SetMinSize((100,50))
self.button_48.SetMinSize((100,50))
self.button_49.SetMinSize((100,50))
self.button_50.SetMinSize((100,50))
self.button_51.SetMinSize((100,50))
self.button_52.SetMinSize((100,50))
#endwxGlade
def__do_layout(self):
#beginwxGlade:MyFrame.__do_layout
sizer_2=wx.BoxSizer(wx.VERTICAL)
sizer_3=wx.BoxSizer(wx.VERTICAL)
grid_sizer_1=wx.GridSizer(4,4,0,0)
sizer_3.Add(self.text_ctrl_1,0,0,0)
grid_sizer_1.Add(self.button_37,0,0,0)
grid_sizer_1.Add(self.button_38,0,0,0)
grid_sizer_1.Add(self.button_39,0,0,0)
grid_sizer_1.Add(self.button_40,0,0,0)
grid_sizer_1.Add(self.button_41,0,0,0)
grid_sizer_1.Add(self.button_42,0,0,0)
grid_sizer_1.Add(self.button_43,0,0,0)
grid_sizer_1.Add(self.button_44,0,0,0)
grid_sizer_1.Add(self.button_46,0,0,0)
grid_sizer_1.Add(self.button_45,0,0,0)
grid_sizer_1.Add(self.button_47,0,0,0)
grid_sizer_1.Add(self.button_48,0,0,0)
grid_sizer_1.Add(self.button_49,0,0,0)
grid_sizer_1.Add(self.button_50,0,0,0)
grid_sizer_1.Add(self.button_51,0,0,0)
grid_sizer_1.Add(self.button_52,0,0,0)
sizer_3.Add(grid_sizer_1,1,wx.EXPAND,0)
sizer_2.Add(sizer_3,1,wx.EXPAND,0)
self.SetSizer(sizer_2)
sizer_2.Fit(self)
self.Layout()
#endwxGlade
defbu1(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.AppendText("1")
event.Skip()
defbu2(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.AppendText("2")
event.Skip()
defbu3(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.AppendText("3")
event.Skip()
defbu_plus(self,event):#wxGlade:MyFrame.<event_handler>
self.num1=self.text_ctrl_1.GetValue()
self.op="+"
self.text_ctrl_1.Clear()
event.Skip()
defbu4(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.AppendText("4")
event.Skip()
defbu5(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.AppendText("5")
event.Skip()
defbu6(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.AppendText("6")
event.Skip()
defbu_min(self,event):#wxGlade:MyFrame.<event_handler>
self.num1=self.text_ctrl_1.GetValue()
self.op="-"
self.text_ctrl_1.Clear()
event.Skip()
defbu7(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.AppendText("7")
event.Skip()
defbu8(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.AppendText("8")
event.Skip()
defbu9(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.AppendText("9")
event.Skip()
defbu_mul(self,event):#wxGlade:MyFrame.<event_handler>
self.num1=self.text_ctrl_1.GetValue()
self.op="x"
self.text_ctrl_1.Clear()
event.Skip()
defbu_clear(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.Clear()
event.Skip()
defbu0(self,event):#wxGlade:MyFrame.<event_handler>
self.text_ctrl_1.AppendText("0")
event.Skip()
defbu_chu(self,event):#wxGlade:MyFrame.<event_handler>
self.num1=self.text_ctrl_1.GetValue()
self.op="/"
self.text_ctrl_1.Clear()
event.Skip()
defbu_result(self,event):#wxGlade:MyFrame.<event_handler>
self.num2=self.text_ctrl_1.GetValue()
num1=int(self.num1)
num2=int(self.num2)
ifself.op=="+":
self.text_ctrl_1.SetValue(str(num1+num2))
elifself.op=="-":
self.text_ctrl_1.SetValue(str(num1-num2))
elifself.op=="x":
self.text_ctrl_1.SetValue(str(num1*num2))
elifself.op=="/":
self.text_ctrl_1.SetValue(str(num1/num2))
event.Skip()
#endofclassMyFrame
if__name__=="__main__":
app=wx.App(False)
myframe=MyFrame(None)
app.MainLoop()
『伍』 用Python3實現表達式求值
include <malloc.h> #include <stdio.h> #include <ctype.h>//判斷是否為字元的函數的頭文件 #define maxsize 100 typedef int elemtype; typedef struct sqstack sqstack;//由於sqstack不是一個類型 而struct sqstack才是 char ch[7]=;//把符號轉換成一個字元數組 int f1[7]=;//棧內元素優先順序 int f2[7]=;//棧外的元素優先順序 struct sqstack { elemtype stack[maxsize]; int top; }; void Initstack(sqstack *s) { s->top=0; } void Push(sqstack *s,elemtype x) { if(s->top==maxsize-1) printf("Overflow\n"); else { s->top++; s->stack[s->top]=x; } } void Pop(sqstack *s,elemtype *x) { if(s->top==0) printf("underflow\n"); else { *x=s->stack[s->top]; s->top--; } } elemtype Gettop(sqstack s) { if(s.top==0) { printf("underflow\n"); return 0; } else return s.stack[s.top]; } elemtype f(char c) { switch(c) { case '+': return 0; case '-': return 1; case '*': return 2; case '/': return 3; case '(': return 4; case ')': return 5; default: return 6; } } char precede(char c1,char c2) { int i1=f(c1); int i2=f(c2);//把字元變成數字 if(f1[i1]>f2[i2])//通過原來設定找到優先順序 return '>'; else if(f1[i1]<f2[i2]) return '<'; else return '='; } int Operate(elemtype a,elemtype theta,elemtype b) { int sum; switch(theta) { case 0: sum=a+b; break; case 1: sum=a-b; break; case 2: sum=a*b; break; default: sum=a/b; } return sum; } EvaluateExpression() { char c; int i=0,sum=0; int k=1,j=1;//設置了開關變數 elemtype x,theta,a,b; sqstack OPTR,OPND; Initstack(&OPTR); Push(&OPTR,f('#'));//0壓入棧 Initstack(&OPND); c=getchar(); if(c==ch[2]||c==ch[3]||c==ch[5]||c==ch[6])//先對+和-的情況忽略和左括弧的情況 { printf("錯誤1 \n"); k=0; return 0; } if(c==ch[0]) c=getchar();//如果是+,把它覆蓋 if(c==ch[1]) { j=0; c=getchar();//也把-號覆蓋 } while(c!='#'||ch[Gettop(OPTR)]!='#') { if(isdigit(c)) { sum=0; while(isdigit(c)) { if(!j) { sum=sum*10-(c-'0');//實現了數字串前面有負號(之前是:sum=-(sum*10)-(c-'0')結果是-12+13=21) } else sum=sum*10+(c-'0'); c=getchar(); } Push(&OPND,sum);//如果還是數字先不壓棧,把數字串轉化成十進制數字再壓棧 j=1; } else if(k) { switch(precede(ch[Gettop(OPTR)],c)) { case'<': Push(&OPTR,f(c));//把它們整型化 c=getchar(); if(c==ch[0]||c==ch[1]||c==ch[2]||c==ch[3]||c==ch[5]||c=='\n')//要除去下個是『(』的情況 也把以運算符歸到這里來 { printf("出錯2\n"); k=0; return 0;//加了開關變數和返回0的值使程序更以操作 } break; case'=': Pop(&OPTR,&x); c=getchar(); if(c==ch[0]||c==ch[1]||c==ch[2]||c==ch[3]||c==ch[5]||c=='\n')//把ch[6]的情況也忽略了但此時並沒有注意到右括弧後面右運算符的情況 { printf("出錯2\n"); k=0; return 0; } break; case'>': Pop(&OPTR,&theta); Pop(&OPND,&b); Pop(&OPND,&a);//注意這里是誰先出棧 Push(&OPND,Operate(a,theta,b)); break; } } }//在這里判斷是否以運算符結束是不對的 return(Gettop(OPND)); } main() { int result; printf("輸入你的算術表達式:\n"); result=EvaluateExpression(); printf("結果是 :%d\n",result); return 0; } : 本計算器利用堆棧來實現。 1、定義後綴式計算器的堆棧結構 因為需要存儲的單元不多,這里使用順序棧,即用一維數組來模擬堆棧: #define MAX 100 int stack[MAX]; int top=0; 因此程序中定義了長度為MAX的一維數組,這里MAX用宏定義為常數100,我們可以修改宏定義而重新定義堆棧的大小。 整型數據top為棧頂指示,由於程序開始時堆棧中並無任何數據元素,因此top被初始化為0。 2、存儲後綴式計算器的運算數 我們定義了堆棧stack[MAX]後,就可以利用入棧操作存儲先後輸入的兩個運算數。 下面看一下是如何實現的: int push(int i) /*存儲運算數,入棧操作*/ { if(top<MAX) { stack[++top]=i; /*堆棧仍有空間,棧頂指示上移一個位置*/ return 0; } else /*堆棧已滿,給出錯誤信息,返回出錯指示*/ { printf("The stack is full"); return ERR; } } 我們在調用函數push時,如果它的返回值為0,說明入棧操作成功;否則,若返回值為ERR(在程序中說明為-1),說明入棧操作失敗。 3、從堆棧中取出運算數 當程序中讀完了四則運算符後,我們就可以從堆棧中取出已經存入的兩個運算數,構成表達式,計算出結果。取出運算數的函數採用的正是出棧演算法。在本例中,實現該演算法的函數 為pop(): int pop(); /*取出運算數,出棧操作*/ { int var; /*定義待返回的棧頂元素*/ if(top!=NULL) /*堆棧中仍有數據元素*/ { var=stack[top--]; /*堆棧指示下移一個位置*/ return var; } else /*堆棧為空,給出錯誤信息,並返回出錯返回值*/ printf("The stack is cmpty!\n"); return ERR; } 同樣,如果堆棧不為空,pop()函數返回堆棧頂端的數據元素,否則,給出棧空提示,並返回錯誤返回值ERR。 4、設計完整的後綴式計算器 有了堆棧存儲運算數,後綴式計算器的設計就很簡單了。程序首先提示用戶輸入第一個運算數,調用push()函數存入堆棧中;而後提示用戶輸入第二個運算數,同樣調用push()函數存入堆棧中。接下來,程序提示用戶輸入+,-,*,/四種運算符的一種,程序通過switch_case結構判斷輸入運算符的種類,轉而執行不同的處理代碼。以除法為例,說明程序的執行流程: case '/': b=pop(); a=pop(); c=a/b; printf("\n\nThe result is %d\n",c); printf("\n"); break; 程序判斷用戶輸入的是除號後,就執行上述代碼。首先接連兩次調用pop()函數從堆棧中讀出先前輸入的運算數,存入整型數a和b中;然後執行除法運算,結果存入單元c中。這時需要考慮究竟誰是被除數,誰是除數。由於開始我們先將被除數入棧,根據堆棧「先進後出」的原則,被除數應該是第二次調用pop()函數得到的返回值。而除數則是第一次調用pop()函數得到的返回值。 最後程序列印出運算結果,並示提示用戶是否繼續運行程序: printf("\t Continue?(y/n):"); l=getche(); if(l=='n') exit(0); 如果用戶回答是"n",那麼結束程序,否則繼續循環。 完整的程序代碼如下: #include<stdio.h> #include<conio.h> #include<stdlib.h> #define ERR -1 #define MAX 100 /*定義堆棧的大小*/ int stack[MAX]; /*用一維數組定義堆棧*/ int top=0; /*定義堆棧指示*/ int push(int i) /*存儲運算數,入棧操作*/ { if(top<MAX) { stack[++top]=i; /*堆棧仍有空間,棧頂指示上移一個位置*/ return 0; } else { printf("The stack is full"); return ERR; } } int pop() /*取出運算數,出棧操作*/ { int var; /*定義待返回的棧頂元素*/ if(top!=NULL) /*堆棧中仍有元素*/ { var=stack[top--]; /*堆棧指示下移一個位置*/ return var; /*返回棧頂元素*/ } else printf("The stack is empty!\n"); return ERR; } void main() { int m,n; char l; int a,b,c; int k; do{ printf("\tAriothmatic Operate simulator\n"); /*給出提示信息*/ printf("\n\tPlease input first number:"); /*輸入第一個運算數*/ scanf("%d",&m); push(m); /*第一個運算數入棧*/ printf("\n\tPlease input second number:"); /*輸入第二個運算數*/ scanf("%d",&n); push(n); /*第二個運算數入棧*/ printf("\n\tChoose operator(+/-/*//):"); l=getche(); /*輸入運算符*/ switch(l) /*判斷運算符,轉而執行相應代碼*/ { case '+': b=pop(); a=pop(); c=a+b; printf("\n\n\tThe result is %d\n",c); printf("\n"); break; case '-': b=pop(); a=pop(); c=a-b; printf("\n\n\tThe result is %d\n",c); printf("\n"); break; case '*': b=pop(); a=pop(); c=a*b; printf("\n\n\tThe result is %d\n",c); printf("\n"); break; case '/': b=pop(); a=pop(); c=a/b; printf("\n\n\tThe result is %d\n",c); printf("\n"); break; } printf("\tContinue?(y/n):"); /*提示用戶是否結束程序*/ l=getche(); if(l=='n') exit(0); }while(1); } : #include <stdio.h> #include <conio.h> #include <malloc.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; #define STACK_INIT_SIZE 100 //初始分配量 #define STACKINCREMENT 10 //存儲空間的分配增量 typedef char ElemType; typedef ElemType OperandType; //操作數 typedef char OperatorType; typedef struct { ElemType *base; ElemType *top; int stacksize; }SqStack; Status InitStack(SqStack &S) { //構造一個空棧S S.base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); if(!S.base) exit (OVERFLOW); S.top = S.base; S.stacksize = STACK_INIT_SIZE; return OK; } Status GetTop(SqStack S){ ElemType e; if (S.top == S.base) return ERROR; e = *(S.top-1); return e; } Status Push (SqStack &S,ElemType e) { //插入元素e為新的棧頂元素 if (S.top - S.base >= S.stacksize){ S.base = (ElemType *) realloc ( S.base, (S.stacksize + STACKINCREMENT) * sizeof(ElemType)); if(!S.base) exit (OVERFLOW); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } *S.top++ = e; return OK; } Status Pop (SqStack &S,ElemType &e){ //若棧不空,則刪除S的棧頂元素,用e返回其值,並返回OK;否則返回ERROR if(S.top == S.base) return ERROR; e = * --S.top; return OK; } char In(char c,char OP[]) { if(c>=35 && c<=47) return 1; else return 0; } char OP[8]=; int m[7][7]={1,1,2,2,2,1,1, 1,1,2,2,2,1,1, 1,1,1,1,2,1,1, 1,1,1,1,2,1,1, 2,2,2,2,2,0,-1, 1,1,1,1,-1,1,1, 2,2,2,2,2,-1,0};//1 > 2 < 0 = -1 不存在 char Precede(char i,char j) { int a,b; char *p; for(p=OP,a=0;*p!='\0';p++,a++) if(*p==i) break; for(p=OP,b=0;*p!='\0';p++,b++) if(*p==j) break; if(m[a][b]==1) return '>'; else if(m[a][b]==2) return '<'; else if(m[a][b]==0) return '='; else return 'O'; } char Operate(char a,char theta,char b) { if(a>47) a=atoi(&a); if(b>47) b=atoi(&b); switch(theta) { case '+': return a+b; break; case '-': return a-b; break; case '*': return a*b; break; case '/': return a/b; break; } } OperandType EvaluateExpression() { SqStack OPTR,OPND; OperandType a,b,c; OperatorType theta; InitStack(OPTR); Push(OPTR,'#'); InitStack(OPND); c=getchar(); while (c!='#' || GetTop(OPTR)!='#') { if (!In(c,OP)) else switch(Precede(GetTop(OPTR),c)) { case '<' : Push(OPTR,c); c = getchar(); break; case '=' : Pop(OPTR,c); c = getchar(); break; case '>' : Pop(OPTR,theta); Pop(OPND,b); Pop(OPND,a); Push(OPND,Operate(a,theta,b)); break; } } return GetTop(OPND); } void main() { printf("(以#為結束符)\n"); printf("請輸入:\n"); int a; a=(int)EvaluateExpression(); printf("%d",a); getch(); } : ls都正確 : C++ In Action這本書裡面有表達式求值的詳細項目分析. : 數據結構的書裡面都有的,仔細看一下 : studyall123的只能對0到9的數字運算才有效,對於10以上的數字就不行!不知道有沒有更好的方法! : 現在的人,連google一下都懶啊 : 實際上是按照逆波蘭式的順序讓輸入的表達式入棧,再根據運算符優先順序來計算。 : lenrning!
『陸』 將 Python 當做計算器使用方法
我們來嘗試一些簡單的 Python 命令。啟動解釋器然後等待主提示符 >>> 出現(不需要很久)。
3.1.1. 數字
解釋器表現得就像一個簡單的計算器:可以向其錄入一些表達式,它會給出返回值。表達式語法很直白:運算符 +,-,* 和 / 與其它語言一樣(例如:Pascal 或 C);括弧 (()) 用於分組。
整數(例如,2, 4, 20 )的類型是 int,帶有小數部分的數字(例如,5.0, 1.6)的類型是 float。在本教程的後面我們會看到更多關於數字類型的內容。
除法(/)永遠返回一個浮點數。如要使用 floor 除法 並且得到整數結果(丟掉任何小數部分),你可以使用 // 運算符;要計算余數你可以使用 %
此變數對於用戶是只讀的。不要嘗試給它賦值 —— 你只會創建一個獨立的同名局部變數,它屏蔽了系統內置變數的魔術效果。
除了 int 和 float,Python 還支持其它數字類型,例如 Decimal 和 Fraction。Python 還內建支持 復數 ,使用後綴 j 或 J 表示虛數部分
『柒』 求助,用python編寫一個模擬個人所得稅計算器程序,數據看圖
sal=float(input('請輸入當月稅前工資:'))
S=sal-3500
if 0<S<=1500:
L=S*0.03
print('應納枝察租稅%.2f元'%L)
elif 1500<S<=4500:
L=1500*0.03+(S-1500)*0.1
print('應納稅%.2f元'%L)
elif 4500<S<=9000:
L=1500*0.03+3000*0.1+(S-4500)*0.2
print('應納稅%.2f元'%L)
elif 9000<S<=35000:
L=1500*0.03+3000*0.1+4500*0.2+(S-9000)*0.25
print('應納沒尺稅%.2f元'%L)
elif 35000<S<=55000:
L=1500*0.03+3000*0.1+4500*0.2+26000*0.25+(S-35000)*0.3
print('應納稅%.2f元'%L)
elif 55000<S<猛兆=80000:
L=1500*0.03+3000*0.1+4500*0.2+26000*0.25+20000*0.3+(S-55000)*0.35
print('應納稅%.2f元'%L)
elif S>80000:
L=1500*0.03+3000*0.1+4500*0.2+26000*0.25+20000*0.3+25000*0.35+(S-80000)*0.45
print('應納稅%.2f元'%L)
else:
print('未到起征點,不用交稅')
『捌』 如何運用Python編寫簡易計算器
import time
print("計算器")
print("+等於加法模式 -等於減法模式 *等於乘法模式 /等於除法模式")
while 2 > 1:
try:
print("請輸入+,-,*或/")
a = input()
if a == "+":
print("請輸入第1個加數")
b = input()
print("請輸入第2個加數")
c = input()
print("計算中")
time.sleep(0.3)
j = float(b) + float(c)
print("等於"+str(j))
elif a == "-":
print("請輸入被減數")
b = input()
print("請輸入減數")
c = input()
print("計算中")
time.sleep(0.3)
j = float(b) - float(c)
print("等於"+str(j))
elif a == "*":
print("請輸入第1個因數")
b = input()
print("請輸入第2個因數")
c = input()
print("計算中")
time.sleep(0.3)
j = float(b) * float(c)
print("等於"+str(j))
elif a == "/":
print("……等於余數模式 .等於小數模式")
print("請輸入……或.")
a = input()
if a == ".":
print("請輸入被除數")
b = input()
print("請輸入除數")
c = input()
print("計算中")
time.sleep(0.3)
j = float(b) / float(c)
print("等於"+str(j))
if c == "0":
print("除數不能為0!")
elif a == "……":
print("請輸入被除數")
b = input()
print("請輸入除數")
c = input()
j = float(b) // float(c)
e = float(b) % float(c)
print("等於"+str(j)+"……"+str(e))
if c == "0":
print("除數不能為0!")
except Exception as e:
print("您輸入的內容有錯誤")