python实践–2
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的值修改为50
print(x)
x=10
f2()
f1()
改正:
知识点:global关键字
def f1():
print(x)
def f2():
global x #global关键字
x=50 #将全局变量x的值修改为50
print(x)
x=10
f2()
f1()
5.请改正下面程序中存在的错误:
def deco(func):
def inner():
print('deco begin')
func()
print('deco end')
return inner
@deco
def 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
@deco
def 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
@deco
def 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 = 2
flag = True
while i <= x ** 0.5:
if x % i == 0:
return 0
i += 1
return 1
if __name__ == "__main__":
a = ""
# while not a.endswith(" 0") |a.startswith("0"):
while 1:
a = input()
b = int(a)
if b == 0:
break
elif b < 2:
print("invalid")
elif is_prime(b):
print("Yes")
else:
print("No")