python学习中一些问题的解决方案
2021-11-26 # 学习笔记 # python

前言

这篇算是一个速记的部分。主要是最近在一些地方接触到python的时候碰到的一些问题。因为没有系统的学过python,所以想着找个地方记录一下这些零碎的小问题。这个文档也许会随着不断遇到问题而随时更新。

输入输出

一次性输入多个变量

借助map函数和字符串处理的split方法

1
2
3
map(function, iterable, ...)
#map() 会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数
#返回包含每次 function 函数返回值的迭代器。
1
2
3
4
str.split(str="", num)
#str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
#num -- 分割次数。默认为 -1, 即分隔所有。
#返回分割后的字符串列表。

例:输入两个整数m,n,写法如下:

1
m,n = map(int,input().split())

若输入的变量个数未知,则可以用list来存储。list()函数可将map所返回的迭代器转化为列表。从而存储起来。

1
list1 = list(map(int,input.split()))

字符串处理

处理字符串表达式

借助eval()函数,例:

1
2
3
4
eval('2 + 2')
eval( '3 * x' )
eval('pow(2,2)')
#会返回计算结果数值

字符串中数字和符号之间和字符串左右两端有无空格均可。

分割文章中的单词

借助re模块中的函数实现

关于re模块的使用方式可参考:https://blog.csdn.net/weixin_42793426/article/details/88545939

关于正则表达式的使用:

具体实现方式

1
2
3
4
5
6
7
8
import re #import re模块
str = input() #将文章以字符串的形式读入
pattern = re.compile("\w+") #该种写法会留下单词和数字
pattern = re.compile("[a-zA-Z]+") #该种写法只会留下单词
pattern = re.compile("\w+'?\w?\.?") #该种写法在留下单词和数字的基础上,也保留了形如I'm, Mrs.之类的单词
pattern = re.compile(r"[a-zA-Z]+'?[a-zA-Z]?\.?") #该种写法相比于上面的写法去掉了数字
words = pattern.findall(str)
print(words)