环境

python 3.*
def operator(op1,op2,opfu):
#定义符号函数,op1表示第一个运算数值,op2表示第二个,opfu表示运算符号
if opfu not in '+-*/':
return -1
#如果opfu不是这四个符号当中的任何一个,返回值是-1,表示程序出错
if opfu == '+':
qiao = op1+op2
#如果符号是+,那就表示op1加上op2
elif opfu == '-':
qiao = op1 - op2
#如果符号是-,表示op1减去op2
elif opfu == '*':
qiao = op1 * op2
elif opfu == '/':
if op2 == 0:
print('error,not is 0/n')
qiao = None
else:
qiao = op1 / op2
#进行除法运算时除数不能够为0,所以先排除在外,为0是返回值为None,表示程序错误
return qiao
#将运算结果返回
def convert(op):
#定义函数,作用是将用户输入字符串转换为数值型
flag=True
#定义该变量用于判断数值有效性
for i in op:
if i not in '1234567890':
flag=False
break
#op是传进来的字符串,使用循环来判断字符的规范性,如不规范,则flag值为False,并退出循环
if flag==True:
return int(op)
else:
return None
#如果flag的值为True,即数值是规范的,那么将其进行数值类型转换,为整形;否则,返回None,程序错误
if __name__ == '__main__':
#表示,是当作脚本运行
str1 = 'please press first number:\n'
strfu = 'please press a mathfu:\n'
str2 = 'please press second number:\n'
#三个变量给用户输入提示信息,和用户进行交互
while True:
print('q is quit')
#告知q表示退出
opp1 = input(str1)
ch = opp1.strip()[0].lower()
if ch == 'q':
break
#如果ch值,即用户输入的为q,跳出循环
op1 = convert(opp1)
#调用convert函数对第一个数转换数据类型为整形
if op1 ==None:
print('error,please against try!\n')
continue
#如果函数返回值为None,输出提示信息,跳出本次循环,进行下一次循环
while True:
opfu = input(strfu)
if opfu in '+-*/':
break
else:
print('mathfu had error!')
continue
#给用户一个交互是用户输入符号赋值给opfu,符号规范则结束循环;否则,输出提示,然后再次循环。
while True:
op2 = convert(input(str2))
if op2 == None:
print('press had error ,against try!\n')
continue
else:
break
#调用convert函数转换数据类型,这是第二个数值
result = operator(op1,op2,opfu)
#调用之前定义的operator函数进行运算,并将结果复制给result变量
if result != None:
print('计算%d %s %d=%d'%(op1,opfu,op2,result))
#如果结果不为None,即表示程序正常运行,那就输出信息。
#字符串拼接需要注意是为英文符号,还有顺序
print('quited')
#为q退出,并提示信息。

python带参函数(计算器脚本解释标注)的更多相关文章

  1. 定时器(setTimeout/setInterval)调用带参函数失效解决方法

    也许你曾碰到过这样的问题,不管是setInterval()还是setTimeout(),当code参数里放一个带参函数时,定时器都会失效,看下面这个例子: function test(str){ al ...

  2. python第六天函数,定义、调用、不带参函数、带参函数等

    在python定义函数需要用到的关键字是 def  xxxx():,这个关键字就是 defined 的缩写.具体看实例: >>> def hello(): print("你 ...

  3. python带参装饰器的改良版

    简单点就是这种 def deco2(param=1): def _deco2(fun): def __deco2(*args, **kwargs): print (param) fun(*args, ...

  4. Python带括号的计算器

    带括号的计算器也是第一个自我感觉完成最好的 毕竟真的弄了一个多星期 虽然前期这路真的很难走  我会努力加油  将Python学好学踏实 参考了两位博主的文章 http://www.cnblogs.co ...

  5. Python中,关于调用带参函数,一些需要注意的问题(监听时)

    1.如果监听调用的函数不带参数(start()) Button.clicked.connect(start)) def strat(): ... 2.如果监听调用的函数带参数(start(x,y)) ...

  6. Python学习教程(learning Python)--2.3.1 Python传参函数设计

    本节主要讨论设计传递多个参数子函数的设计方法. 在2.3节里我们讨论了如何自己设计一个带参数的子函数的设计方法,现在我们研究一下如何传递两个及以上参数的设计方法. 函数为何要带参数呢?其实原因很简单, ...

  7. Python学习入门基础教程(learning Python)--2.3.1 Python传参函数设计

    本节主要讨论设计传递多个参数子函数的设计方法. 在2.3节里我们讨论了如何自己设计一个带参数的子函数的设计方法,现在我们研究一下如何传递两个及以上参数的设计方法. 函数为何要带参数呢?其实原因很简单, ...

  8. 定时器(setTimeout和setInterval)调用带参函数失效解决方法

    方法1:用匿名函数包裹  function test(str){  alert(str);  }  var a = "abcde"  setTimeout(function(){  ...

  9. Qt webview调用JavaScript 带参函数

    void MainWindow::on_pushButtonShowMarker_clicked() { QString lat = "104.701681"; QString l ...

随机推荐

  1. Java基础练习1(数据类型转换)

    1.下列代码的输出结果是:()(单选) public static void main(String[] args){ double money = 3.0; money -= 2.9; System ...

  2. 【MQ】消息队列及常见MQ比较

    一.什么是消息队列 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用.消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰. ...

  3. 接口以及 LeetCode 每日一题

    1 接口 1.1 接口的概念 接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心类内方法的实现细节,只是规定这批类里面必须提供某些方法.所以接口体现的是规范和实现分离的设计哲 ...

  4. OKR能解决996吗?德鲁克怎么看?

    最近网络上热议的“996”,不由让人想起我们的邻国日本.他们在20年前就有过一个热词“过劳死”,就是职场加班太严重导致的猝死. 最近有一本书新书<过劳时代>,说的就是日本20年前的过劳死. ...

  5. Java遍历List集合的4种方式

    public class Test { public static void main(String[] args) { // 循环遍历List的4中方法 List<String> str ...

  6. 网络协议 19 - RPC协议综述:远在天边近在眼前

    [前五篇]系列文章传送门: 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - DNS 协议:网络世界的地址簿 网络协议 17 - HT ...

  7. Java基础知识回顾之五 ----- 多线程

    前言 在上一篇文章中,回顾了Java的集合.而在本篇文章中主要介绍多线程的相关知识.主要介绍的知识点为线程的介绍.多线程的使用.以及在多线程中使用的一些方法. 线程和进程 线程 表示进程中负责程序执行 ...

  8. Golang 入门 : 映射(map)

    映射是一种数据结构,用于存储一系列无序的键值对,它基于键来存储值.映射的特点是能够基于键快速检索数据.键就像是数组的索引一样,指向与键关联的值.与 C++.Java 等编程语言不同,在 Golang ...

  9. 《C#并发编程经典实例》学习笔记—2.2 返回完成的任务

    问题: 如何实现一个具有异步签名的同步方法. 从异步接口或基类继承代码,但希望用同步方式实现方法. 解释一下所谓的异步接口和异步基类.例如如下代码 interface IMyAsyncInterfac ...

  10. 部署ionic开发环境

    (1)安装Node.js 首先您需要安装 Node.js,后续会使用到其中的 NPM 工具. (2)安装JDK 需要安装JDK,官网下载安装.命令窗口中输入 java -Xmx2048m -versi ...