week07

Posted 天友xz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了week07相关的知识,希望对你有一定的参考价值。

1. 如何为函数定义keyword-only参数(写出个例子即可)?

keyword-only形参,位于*args或者*,之后,只能接受关键字传入实参。

#示例1
def foo(x, *args, y):
    print(x, y, args)
    
foo(1, 2, 4, y=200)   #调用时keyword-only参数只支持以关键字形式传入的参数
    
#示例2
def foo(*, x, y): 
    print(x, y)

foo(x=1, y=\'abc\')
#示例3
def bar(a, b, /, c, d=10, *args, m=20, n, **kwargs):  #注意*args后面的m=20定义缺省值可以放在前面
    print(a, b, c, d, args, m, n, kwargs)

#该函数中,m和n时keyword-only参数,需要以k,y的形式传入实参,但是因为m有默认值,所以直接传入n的参数即可。注意传参的时候要放到位置参数后面。
bar(1, 2, n=100, c=5)
2 5 10 () 20 100 {}

2. 什么是LEGB,请解释

变量的优先级顺序,优先级由高低依次是L-->E-->G-->B。函数定义中,优先使用本地局部变量,本地无定义的情况下在按顺序向外查找。

  • L: Local,本地局部变量。

  • E: Enclosing,外层函数局部变量。

  • G: Goabl,跟模块有关,当前模块中的全局变量,模块需要加载,默认是main模块。

  • B: Built-in,内建变量,print,list,str,int,range,Exception 生命周期和解释器相同。

3. 实现一个计算机程序,如下效果:

  1. 运行后提示让用户输入一个数字
  2. 提示输入操作符(+ - * /)
  3. 再次提示输入一个数字
  4. 打印计算结果
  5. 在不退出程序的前提下,可以允许用户继续输入新一组数据计算
  6. 尽可能改善用户体验
def addition(x, y):
    return x + y

def subtraction(x, y):
    return x - y 

def multipulication(x, y):
    return x * y
    
def division(x, y):
    return x / y

def calculator(*args):
    print("="* 30 + "简单计算器" + "=" * 30)
    x = int(input(\'请输入一个数字: \'))
    o = input(\'请输入运算符 + - * /: \')
    y = int(input(\'请输入第二个数字: \'))
    if x or y or o:
        print("请按要求输入相应的字符。")
    if o == \'+\':
        return addition(x, y)
    elif o == \'-\':
        return subtraction(x, y)
    elif o == \'*\':
        return multipulication(x, y)
    if o == \'/\' and y != 0:
        return division(x, y)
    else:
        print("0不可以做除数,请重新输入。")

while True:
    print("计算结果:{}".format(calculator()))

#输出结果
==============================简单计算器==============================
请输入一个数字: 1000
请输入运算符 + - * /: +
请输入第二个数字: 1000
请按要求输入相应的字符。
计算结果:2000

以上是关于week07的主要内容,如果未能解决你的问题,请参考以下文章

homework week07

March 07th, 2018 Week 10th Wednesday

November 07th, 2017 Week 45th Tuesday

January 07th, 2018 Week 01st Sunday

July 07th 2017 Week 27th Friday

December 07th 2016 Week 50th Wednesday