1.请改正下面程序中存在的错误:

  1. def StudentInfo(country='China', chineselevel='A', name):
  2. print('%s,%s,%s'%(name,country,chineselevel))
  3. StudentInfo(country='America', chineselevel='B', name='John')

错误改正:
name为非默认参数,需要放在默认参数的前面,以免引起歧义,上方的代码会报错
例如:StudentInfo(‘China’,’Jonh’),导致第三个参数无赋值,所以把缺省参数放在后面

  1. def StudentInfo(name, country='China', chineselevel='A'):
  2. print('%s,%s,%s' % (name, country, chineselevel))
  3. StudentInfo(country='America', chineselevel='B', name='John')

注:在python中可以使用’ ‘来表示字符串

2.请改正下面程序中存在的错误:

  1. def StudentInfo(name, **args):
  2. print(name,args)
  3. StudentInfo('Li Xiaoming', 'China', 'A')

知识点:对于不定长参数的定义:1.args方式,则使用位置参数;
2.*
args方式,则使用关键字参数。
改正方式1:

  1. def StudentInfo(name, **args):
  2. print(name, args)
  3. StudentInfo('Li Xiaoming', country='China', chinese_level='A')

改正方式2:

  1. def StudentInfo(name, *args):
  2. print(name, args)
  3. StudentInfo('Li Xiaoming', 'China', 'A')

3.请改正下面程序中存在的错误:

  1. def Sum(a,b,c):
  2. print(a+b+c)
  3. t=(1,2,3)
  4. Sum(**t)

改正如下:

  1. def Sum(a,b,c):
  2. print(a+b+c)
  3. t=(1,2,3)
  4. Sum(*t)

4.请改正下面程序中存在的错误:

  1. def f1():
  2. print(x)
  3. def f2():
  4. x=50 #将全局变量x的值修改为50
  5. print(x)
  6. x=10
  7. f2()
  8. f1()

改正:
知识点:global关键字

  1. def f1():
  2. print(x)
  3. def f2():
  4. global x #global关键字
  5. x=50 #将全局变量x的值修改为50
  6. print(x)
  7. x=10
  8. f2()
  9. f1()

5.请改正下面程序中存在的错误:

  1. def deco(func):
  2. def inner():
  3. print('deco begin')
  4. func()
  5. print('deco end')
  6. return inner
  7. @deco
  8. def add(a,b):
  9. print(a+b)
  10. if __name__=='__main__':
  11. add(3,5)

改正如下:
知识点:装饰器

  1. def deco(func):
  2. def inner(x,y): #此处的参数与参数传来的func实参的参数个数一致
  3. print('deco begin')
  4. func(x,y)
  5. print('deco end')
  6. return inner
  7. @deco
  8. def add(a,b):
  9. print(a+b)
  10. if __name__=='__main__':
  11. add(3,5)

下面是不限制参数个数的方式:

  1. def deco(func):
  2. def inner(*args,**kwargs):
  3. print('deco begin')
  4. func(*args,**kwargs)
  5. print('deco end')
  6. return inner
  7. @deco
  8. def add(a,b,c,d):
  9. print(a+b+c+d)
  10. if __name__=='__main__':
  11. add(3,4,5,6)

6.编写程序实现以下功能:输入若干整数(输入0结束),每个整数输入完毕后,马上输出该整数是否为素数。要求判断一个整数是否为素数的功能用一个函数实现。

要求:输入整数小于2则输出Invalid,输入整数是素数则输出Yes,输入整数不是素数则输出No

实现如下:

  1. def is_prime(x):
  2. i = 2
  3. flag = True
  4. while i <= x ** 0.5:
  5. if x % i == 0:
  6. return 0
  7. i += 1
  8. return 1
  9. if __name__ == "__main__":
  10. a = ""
  11. # while not a.endswith(" 0") |a.startswith("0"):
  12. while 1:
  13. a = input()
  14. b = int(a)
  15. if b == 0:
  16. break
  17. elif b < 2:
  18. print("invalid")
  19. elif is_prime(b):
  20. print("Yes")
  21. else:
  22. print("No")