4. python黑箱:输入与输出
4.1 输入输出基础
最简单的输入输出:
- age = input(“how old are you?”) :特别需要注意input()函数的用法的是,输入的变量最终都存储为字符串类型
- print()
a = input()
1
b = input()
2
print('a + b = {}'.format(a + b))
########## 输出 ##############
a + b = 12 # 注意是字符串12而不是整数3
print('type of a is {}, type of b is {}'.format(type(a), type(b)))
########## 输出 ##############
type of a is <class 'str'>, type of b is <class 'str'>
print('a + b = {}'.format(int(a) + int(b)))
########## 输出 ##############
a + b = 3
强制转换的注意事项
上面的代码中用到了强制类型转换,在Python中:
- 把 str 强制转换为 int 要用 int(),转为浮点数要用float()
- 在生产环境使用强制类型转换时,要记得使用错误和异常处理(try…except)
Python中的int类型没有最大限制(相比之下,C++的int最大为2147483647,超过这个数字就会产生溢出),但对float类型有精度限制。这些特点除了在一些算法竞赛中要注意,在生产环境中也要时刻堤防,避免因边界问题不清而引起bug甚至0day(危重安全漏洞)
有相当比例的安全漏洞,都来自于随意的I/O操作
4.2 文件输入输出
生产级别的Python代码,大部分I/O则来自文件,网络,其他进程的消息
以下是一个简单的NLP任务:读取文件中的文本,统计词频将统计结果存储在新建文件中
NLP小任务——词频统计:
import re
def parse(text, word_count_dic):
# 大写转小写
text = text.lower()
# 构建这一行字符串的单词列表
word_list = re.findall(r'\w+',text)
# 统计出现的各个单词以及的次数,存于字典结构中
for word in word_list:
word_count_dic[word] = word_count_dic.get(word, 0) + 1 # 这里还可以使用defaultdict字典
return word_count_dic
fin_path = 'G:\Python_Projects\I have a dream.txt'
fout_path = 'G:\Python_Projects\I have a dream parse.txt'
with