我们先来看看def和字典的用法吧:
def ranks(name, number):
ranks = {'name': name, 'rank': number}
print(ranks)
name = input('what is your name ')
number = input('how much is ranked ')
ranks(name, number)
代码及结果如上图所示,写的比较简单,应该没有什么地方要解释的。
咱们在上面的例子上再加上一行代码,就可以玩一年了:
while True:
def ranks(name, number):
ranks = {'name': name, 'rank': number}
print(ranks)
name = input('what is your name ')
number = input('how much is ranked ')
ranks(name, number)
这样就进入了while 循环中,我们填入姓名和排名,就能打印出相应的字典了。如果要退出循环,就要用到break语句了,
while True:
def ranks(name, number):
ranks = {'name': name, 'rank': number}
print(ranks)
name = input('what is your name ')
if name == 'q':
print('exit')
break
number = input('how much is ranked ')
ranks(name, number)
这么我们使用了if+break的用法,代码及结果如上图所示,都算是些常用的用法,知道用法后,要灵活运用。
咱们再来看看def和列表的一些例子,看看它们是怎么一块使用的:
def user(names):
for name in names:
print(name)
user_names = ['av','bv','cv']
user(user_names)
这是一个简单的def和列表的运用,如果要得到结果,其实直接给出一个列表,用for循环会更简单,但调用函数def在下次要打印user()会更方便,也有利于代码的维护。
讲到这,大家会不会有个疑问:我也不知道我的的调用函数里的形参写多少好,不能一一对应,到时代码会报错啊。
我反正是有这个疑问的,毕竟我后面想用到它,但是形参我只写了一个,而我实参却有两个,咱们来看看这个错误代码:
咱们主要看它报的错,这个也是学习的一个能力,毕竟人人都会犯错,要学会快速的解决问题。
TypeError: names() takes 1 positional argument but 2 were given
大致就是说只有一个形参,却给了2个实参。
好了,不卖乖了,这时我们可以用到‘*’来解决,还是上面的例子:
def names(*name):
print(name)
names('av','bv')
咱们只是在形参前面加了一个星号,就可以解决这个问题了,不管调用语句提供了多少实参,这个形参都将它们统统收入囊中,要记住哦。
讲到这,我们在多学一点,虽然 *形参可以囊括所有的实参,但在python中,先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。 咱们还是看例子:
def name_number(name,*numbers):
print(name)
for number in numbers:
print(number)
name_number('av',1,2,3,4)
这里我们特意用了字符串加数字以供区分,总那言之,就是在默认情况下,按顺序对应,其它多的实参全都储在了 *形参中。
好了,今天就到这了,大家多多练习吧。