1.请改正下面程序中存在的错误:
def StudentInfo(country='China', chineselevel='A', name):print('%s,%s,%s'%(name,country,chineselevel))StudentInfo(country='America', chineselevel='B', name='John')
错误改正:
name为非默认参数,需要放在默认参数的前面,以免引起歧义,上方的代码会报错
例如:StudentInfo(‘China’,’Jonh’),导致第三个参数无赋值,所以把缺省参数放在后面
def StudentInfo(name, country='China', chineselevel='A'):print('%s,%s,%s' % (name, country, chineselevel))StudentInfo(country='America', chineselevel='B', name='John')
注:在python中可以使用’ ‘来表示字符串
2.请改正下面程序中存在的错误:
def StudentInfo(name, **args):print(name,args)StudentInfo('Li Xiaoming', 'China', 'A')
知识点:对于不定长参数的定义:1.args方式,则使用位置参数;
2.*args方式,则使用关键字参数。
改正方式1:
def StudentInfo(name, **args):print(name, args)StudentInfo('Li Xiaoming', country='China', chinese_level='A')
改正方式2:
def StudentInfo(name, *args):print(name, args)StudentInfo('Li Xiaoming', 'China', 'A')
3.请改正下面程序中存在的错误:
def Sum(a,b,c):print(a+b+c)t=(1,2,3)Sum(**t)
改正如下:
def Sum(a,b,c):print(a+b+c)t=(1,2,3)Sum(*t)
4.请改正下面程序中存在的错误:
def f1():print(x)def f2():x=50 #将全局变量x的值修改为50print(x)x=10f2()f1()
改正:
知识点:global关键字
def f1():print(x)def f2():global x #global关键字x=50 #将全局变量x的值修改为50print(x)x=10f2()f1()
5.请改正下面程序中存在的错误:
def deco(func):def inner():print('deco begin')func()print('deco end')return inner@decodef add(a,b):print(a+b)if __name__=='__main__':add(3,5)
改正如下:
知识点:装饰器
def deco(func):def inner(x,y): #此处的参数与参数传来的func实参的参数个数一致print('deco begin')func(x,y)print('deco end')return inner@decodef add(a,b):print(a+b)if __name__=='__main__':add(3,5)
下面是不限制参数个数的方式:
def deco(func):def inner(*args,**kwargs):print('deco begin')func(*args,**kwargs)print('deco end')return inner@decodef add(a,b,c,d):print(a+b+c+d)if __name__=='__main__':add(3,4,5,6)
6.编写程序实现以下功能:输入若干整数(输入0结束),每个整数输入完毕后,马上输出该整数是否为素数。要求判断一个整数是否为素数的功能用一个函数实现。
要求:输入整数小于2则输出Invalid,输入整数是素数则输出Yes,输入整数不是素数则输出No
实现如下:
def is_prime(x):i = 2flag = Truewhile i <= x ** 0.5:if x % i == 0:return 0i += 1return 1if __name__ == "__main__":a = ""# while not a.endswith(" 0") |a.startswith("0"):while 1:a = input()b = int(a)if b == 0:breakelif b < 2:print("invalid")elif is_prime(b):print("Yes")else:print("No")
