持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
新手易错
一、输入问题
如
x = input ('亲输入x的值:')
这里的input只返回字符串类型的,如果需要输入的是其他类型需要类型转化 如,需要输入整型
x = int(input ('亲输入x的值:'))
二、缩进问题
一定要缩进对齐 一定要缩进对齐 一定要缩进对齐 哪怕是多一个小小的空格都会导致稀奇古怪的问题
重复向列表中添加字典作为元素
向一个列表中添加字典作为元素时错误
描述
利用一个字典为过渡重复向一个列表中添加字典作为元素时,列表中每个元素都是最后添加的那个值,而不是按顺序输入的字典 ==源码片段==:完整代码请查看开头的博客链接
def luru (): #录入信息
i = int (input('请输入需要输入的人数:'))
for i in range(i) :
print('\n开始录入第%d位教师信息\n\n'%(int(len(xinxi))+1))
xinxi1['教师号'] = input('请输入教师号:')
xinxi1['姓名'] = input('请输入姓名:')
xinxi1['性别'] = input('请输入性别:')
xinxi1['年龄'] = input('请输入年龄:')
xinxi1['电话'] = input('请输入电话:')
xinxi1['工资'] = input('请输入工资:')
xinxi1['职称'] = input('请输入职称:')
xinxi1['课程名称'] = input('请输入3课程名称:')
xinxi1['班级数'] = input('请输入班级数:')
xinxi.append(xinxi1)
else :
print ('输入结束')
解决
问题是python中是名字像标签一样贴在变量上xinxi.append(xinxi1),是把变量放入列表会随着xinxi1修改而变,所以用dict转化一下,这样录入列表的信息就不会随xinxi1而改变 将上面代码片段的
xinxi.append(xinxi1)
修改为
xinxi.append(dict(xinxi1))
==这是我自己的理解有错误还请批评指教==
函数sort()的高级用法
sort()函数原型:
list.sort(key=None, reverse=False) 其实还有一个参数的,在python3 中不用了
参数reverse
reverse决定排序是正序还是反序 reverse接受的是一个bool类型的值 (Ture or False), 表示是否颠倒排列顺序,一般默认的是False(正序), 注意Ture or False第一个字母是大写的
key参数
key接受的是一个只有一个形参的函数,这里的形参传入的将是每一个列表值 形式如下 def f(a): return len(a) ==作用是==key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序(正序or反序)
用法示例
list1 = [c,a,b]
def mykey (a):
return ard(a) #取ascll码
list1.sort(key = mykey,reverse = Ture)
print(list1)
结果输出为
[c,b,a]
多重用法
list1 = [('a', 1), ('b', 2), ('c', 6), ('d', 4), ('e', 3)]
list1.sort(key = lambda x:x[1],reverse =True)
print(list1)
结果输出为
[('c', 6), ('d', 4), ('e', 3), ('b', 2), ('a', 1)]
个人理解,有错误请批评指教
修改全局变量
问题
如
num = 3
def xiugai();
num = 4
print(num)
print(num)
这里的本意是调用xiugai()时候将num修改,但是其实全局变量num并未修改,这是在函数内部时候值变了 上述代码的结果为
4
3
解决
全局变量在自己定义的函数中可以调用,但是不能修改,修改的话会自动在函数内定义一个同名局部变量,两个变量互不影响,若确实需要在函数内修改全局变量则需要使用global在函数内声明为全局变量 如
num = 3
def xiugai();
global num
num = 4
print(num)
print(num)
这样就可以得到需要的结果