发布时间:2019-07-30 10:53:44编辑:auto阅读(1438)
*使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的。
1.当输入为纯数字时,Input返回的是数值类型,如int,float。raw_inpout返回的是字符串类型,string类型
2.input会计算在字符串中的数字表达式,而raw_input不会。
def input(prompt): return (eval(raw_input(prompt)))
eval 函数的功能是将字符串生成语句执行。
*当然使用sys.stdin进行文件读取的时候,使用raw_input而不是input。
dict数据类型存入文件的读写操作源代码:
- dbfilename = 'people-file'
- ENDDB = 'enddb.'
- ENDREC = 'endrec.'
- RECSEP = '=>'
- def storeDbase(db, dbfilenamedbfilename=dbfilename): #加载dict数据到文件
- "formatted dump of database to flat file"
- dbfile=open(dbfilename,'w') #文件打开函数open(),w代表写操作
- for key in db:
- dbfile.write(key+'\n') #文件写操作。不带换行符
- for(name,value) in db[key].items():
- dbfile.write(name+RECSEP+repr(value)+'\n') #repr函数代表取得字符串规范表示。反引号同样的作用
- dbfile.write(ENDREC+'\n')
- dbfile.write(ENDDB+'\n')
- dbfile.close()
- def loadDbase(dbfilenamedbfilename=dbfilename): #读取文件数据到dict函数
- "parse data to reconstruct database"
- dbfile = open(dbfilename) #默认关键字为‘r’
- import sys
- sys.stdin = dbfile #sys.stdin 系统输入
- db = {} #定义dict
- key = raw_input()
- while key != ENDDB:
- rec = {}
- field = raw_input()
- while field != ENDREC:
- name,value = field.split(RECSEP) #split函数以括号内符号分割字符串
- rec[name] = eval(value)
- field = raw_input()
- print rec
- db[key] = rec
- key = raw_input()
- return db
- if __name__ == '__main__':
- storeDbase(db)
- db1=loadDbase()
- db1['tom']['name']='Tom Tomson'
- storeDbase(db1)
上一篇: python:yield总结
下一篇: python install selen
47490
45792
36790
34321
28958
25595
24441
19608
19109
17630
5463°
6046°
5568°
5636°
6571°
5374°
5376°
5882°
5853°
7168°