python做一个计算器小程序要求当输入任意数字每输入一个数字相加当输入零时停止计算出合,输出答案?

python做一个计算器小程序要求当输入任意数字每输入一个数字相加当输入零时停止计算出合,输出答案?,第1张

好的,以下是一个简单的python计算器小程序,可以满足您的需求:

# 初没银始化总和为0

total = 0

while True:

# 获取用户输入

num = int(input("请输入数字(输入0结束计算):"))

# 如果输入的是0,则退出循环

if num == 0:

break

# 否则将输入的数字累加到总和中

total += num

# 输出计算结果

print("计算结果为:", total)

在这个程序中,我们首先初始化了一个变量total表示累加的总和,然后进入一个循环中,在循环中,我们使用input函数获滑慎取用信察敬户输入的数字,如果输入的数字是0,则使用break语句退出循环,否则将输入的数字累加到总和中。

当循环结束后,输出计算结果即可。

下面两个可以么,是我做实验答辩时用到的!

import java.awt.*//AWT核心包

import java.awt.event.*//提供事件类和监听器

public class Counter extends Frame implements ActionListener

{

TextField t=new TextField("")//文本框

Panel p1=new Panel()//new一个panel,用于存放数字键和符号键。

Panel p2=new Panel()//new一个panel,用于存放开方、平方、和清除键。

Button[] b=new Button[10]//实例化Button对象

Button bAdd=new Button("加")

Button bSub=new Button("减")

Button bMul=new Button("乘以")

Button bPoint=new Button(".")

Button bDiv=new Button("除以")

Button bEqual=new Button("等於")

Button bSqrt=new Button("开方")

Button bPow=new Button("平方")

Button bNull=new Button("清除")

String str1=""//str1和str2存放两个输入的数

String str2=""

String operator=null //存放加减乘除以及开平方的符号

boolean first=true //检验输入的是否为第一个数

int countOper=0 //累计输入符号的个数,连加连减等 *** 作中会用到

double result=0.0 //暂存结果

double num1=0.0,num2=0.0 //两个输入的数做运算时转化为double存放

boolean error=false //检验除数是否州型吵为0

//构造方租源法

public Counter()

{

Frame s=new Frame("计算器")//创建Frame

for(int i=0i<10i++)//利用for循环将数字键添加进p1中

{

b[i]=new Button(String.valueOf(i))

p1.add(b[i])

b[i].setActionCommand("number")

b[i].setForeground(new Color(150,20,20))

b[i].addActionListener(this)//调用addActionListener()方法注册事件监听器

}

p1.add(bPoint)

bPoint.setActionCommand("number")

p1.add(bAdd)//数字键,符号键放置在panel的p1中

p1.add(bSub)

p1.add(bMul)

p1.add(bDiv)

p1.add(bEqual)

p2.add(bSqrt)//开方键,平方键,清除键放置在panel的p2中

p2.add(bPow)

p2.add(bNull)

bAdd.setActionCommand("oper")

bSub.setActionCommand("oper")

bMul.setActionCommand("oper")

bDiv.setActionCommand("oper")

bAdd.setForeground(Color.red)//为组键设计颜册侍色

bSub.setForeground(Color.red)

bMul.setForeground(Color.red)

bDiv.setForeground(Color.red)

bPoint.setForeground(Color.black)

bEqual.setForeground(Color.red)

bSqrt.setForeground(Color.blue)

bPow.setForeground(Color.blue)

bNull.setForeground(Color.blue)

bAdd.addActionListener(this)//调用addActionListener()方法注册事件监听器

bSub.addActionListener(this)

bMul.addActionListener(this)

bDiv.addActionListener(this)

bPoint.addActionListener(this)

bEqual.addActionListener(this)

bSqrt.addActionListener(this)

bPow.addActionListener(this)

bNull.addActionListener(this)

p1.setLayout(new GridLayout(4,4,5,5))//网格布局管理器,把容器根据行数和列数分成同样大小的单元,

//每个单元可容纳一个组件,并且此组件会填满网格单元,不能控

//制其占据网格的大小。4、4为网格的行、列数。5、5为组建之间的

//间距

p2.setLayout(new FlowLayout())//用FlowLayout布局管理器将组建默认剧中排放,默认间隙为5个像素

add(t,"North") //frame的north放置输入框,panel放置在center和south

add(p1,"Center")//将p1添加到Center中

add(p2,"South")//将p2添加到South中

setLocation(400,200)//设计按钮尺寸

setSize(200,200)//设计窗口尺寸

setBackground(new Color(20,200,10))//设置Frame的背景,默认为白色

setVisible(true)//设置Frame设置为可见

addWindowListener(new WindowAdapter(){ //关闭窗口功能

public void windowClosing(WindowEvent e)

{

System.exit(0)

}

})

}

//实现接口ActionListener

public void actionPerformed(ActionEvent e)

{

Button temp=(Button)e.getSource()

if(e.getActionCommand().equals("number"))

{

if(first)

{

str1=str1+temp.getLabel()

t.setText(str1)//将输入的str1显示在文本框中

}

else

{

str2=str2+temp.getLabel()

t.setText(str2)//将输入的str2显示在文本框中

}

}

else if(e.getActionCommand().equals("oper"))

{

if(str1=="")//如果还没有输入数就点击运算符执行if

{

countOper=0//若此,则将计数清零

first=true

}

else

{

countOper++//计算输入符号的个数

if(countOper>1)//若输入的符号个数多余一个,则可以进行计算

{

getResult()

}

operator=temp.getLabel()//存放加减乘除以及开方、平方的符号

first=false

}

}

else if(e.getActionCommand().equals("开方"))

{

double d=Math.sqrt(Double.parseDouble(str1))

str1=String.valueOf(d)//将计算出来的结果再次传给str1,为连计算准备

t.setText(String.valueOf(d))//将计算出来的结果传至文本框中

first=false//置为false,即已输入第一个数

}

else if(e.getActionCommand().equals("平方"))

{

double f=Math.pow(Double.parseDouble(str1),2)

str1=String.valueOf(f)

t.setText(String.valueOf(f))

first=false

}

else if(e.getActionCommand().equals("清除"))

{

str1=""//清空

str2=""

t.setText("")//将文本框清空

countOper=0//将按键计数器清零

first=true

error=false

}

else if(e.getActionCommand().equals("等於"))

{

if((str1=="")||(str2=="")) //两个数没有输全就点击等号,执行if

{

countOper=0//将按键计数器清零

first=true

}

else

{

getResult()

countOper=0

}

}

}

//运算结果的方法

public void getResult()

{

num1=Double.parseDouble(str1)

num2=Double.parseDouble(str2)

if(operator.equals("加"))

{

result=num1+num2

}

else if(operator.equals("减"))

{

result=num1-num2

}

else if(operator.equals("乘以"))

{

result=num1*num2

}

else if(operator.equals("除以"))

{

if(num2==0.0)//除数为0的处理方法

{

error=true

}

else

{

result=num1/num2

}

}

if(error)

{

t.setText("error")

}

else

{

t.setText(String.valueOf(result))

str1=String.valueOf(result) //运算后把结果放入str1中,str2清空,为连加连减等 *** 作做准备

str2=""

}

}

//主方法

public static void main(String[] args)

{

new Counter()//创建一个对象"计算器"

}

}

import java.awt.*

import java.awt.event.*

import javax.swing.*

class CalculatorPanel extends JPanel

implements ActionListener

{ public CalculatorPanel()

{ setLayout(new BorderLayout())

display = new JTextField("0")

display.setEditable(false)

add(display, "North")

JPanel p = new JPanel()

p.setLayout(new GridLayout(4, 4))

String buttons = "789/456*123-0.=+"

for (int i = 0 i < buttons.length() i++)

addButton(p, buttons.substring(i, i + 1))

add(p, "Center")

}

private void addButton(Container c, String s)

{ JButton b = new JButton(s)

c.add(b)

b.addActionListener(this)

}

public void actionPerformed(ActionEvent evt)

{ String s = evt.getActionCommand()

if ('0' <= s.charAt(0) && s.charAt(0) <= '9'

|| s.equals("."))

{ if (start) display.setText(s)

else display.setText(display.getText() + s)

start = false

}

else

{ if (start)

{ if (s.equals("-"))

else op = s

}

else

{ calculate(Double.parseDouble(display.getText()))

op = s

start = true

}

}

}

public void calculate(double n)

{ if (op.equals("+")) arg += n

else if (op.equals("-")) arg -= n

else if (op.equals("*")) arg *= n

else if (op.equals("/")) arg /= n

else if (op.equals("=")) arg = n

display.setText("" + arg)

}

private JTextField display

private double arg = 0

private String op = "="

private boolean start = true

}

public class CalculatorApplet extends JApplet

{ public void init()

{ Container contentPane = getContentPane()

contentPane.add(new CalculatorPanel())

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12465641.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存