sorted()方法用来给数组排序,所以它有一个必须的位置参数,就是用来进行排序的数组,在Python里的类型是list.
比如:
a = [3, 2, 4, 1, 5]
sorted_a = sorted(a)
print("排序后的升序数组:{}".format(sorted_a))
print("排序后的降序数组:{}".format(sorted_a, reverse=True))
sorted()方法除了必须的位置参数,也可接受其它可选参数,比如reverse=True, 如果reverse等于True,那么表示数组的排序是降序; 如果reverse=False表示是升序,默认是升序(也就是说,如果没有传入reverse,那么默认以升序排序。
reversed()方法可以将数组或者字符串反转,这个方法只反转不排序,比如原来是[1,2,4,3],那么转化后就是[3,4,2,1]
type()获取对象的类型, 比如type("ab"),会得到<class 'str'>。
jieba库导入方法(在cmd命令中输入以下指令,如下载过慢,可采取换源 pip install 安装库 -i 源地址)本人用的是清华的:https://pypi.tuna.tsinghua.edu.cn/simple
pip install jieba
1、编写程序打印99乘法表,要求使用format()进行格式化输出。
for i in range(1,10):
for j in range(1,i+1):
print('{:1}*{:0}={:02}'.format(j,i,i*j),end = ' ')
print()
2、使用string模块提供的字符串常量,模拟生成指定长度的随机密码。
import random
from string import ascii_letters,digits
def generatePassword(n):
res = ascii_letters + digits
password = ''.join(random.sample(res,n))
return password
count = int(input("请输入你要产生几位密码:"))
print(generatePassword(count))
3、通过精确模式、全模式和搜索引擎模式对文本“中华人民共和国是伟大的国家”进行分词,简述他们的异同。
import jieba
String = "中华人民共和国是伟大的国家"
print(jieba.lcut(String))
print(jieba.lcut(String,cut_all=True))
print(jieba.lcut_for_search(String))
#相同:都是找出字符串中可能组成词语的字符
#不同:精确模式:把文本精确的切分开,不存在冗余单词
#全模式:把字符串中所有可能的词语都找出来,有冗余
#搜索引擎模式: 在精确模式上对长词语进行细分
4、统计《三国演义》中出现次数较高的人物。(需选定老师指定文本,其中读文本操作,以后会学习到)
import jieba
excludes = {'先主','将军','却说','荆州','二人','不可',
'不能','如此','忽然','下马','喊声','马岱',
'商议','军士','左右','引兵','大喜','于是',
'东吴','今日','如何','军马','天下','不敢',
'魏兵','人马','不知','一人','众将','只见',
'蜀兵','大叫','上马','此人','一面','太守',
'后人','背后','何不','城中','忽报','先锋',
'然后','大军','先生','何故','不如','令人',
'赶来','江东','正是','徐州','因此','未知','大败',
'百姓','一军','之后','接应','起兵','不见','进兵',
'次日','陛下','汉中','天子','夫人','原来','成都',
'大事','引军','可以','心中','大怒','军中'}
txt = open("E:\三国演义.txt", "r", encoding = 'utf-8').read()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1:
continue
elif word == '诸葛亮' or word == '孔明曰':
rword = '孔明'
elif word == '云长' or word == '关公':
rword = '关羽'
elif word == '燕人' or word == '翼德':
rword = '张飞'
elif word == '玄德曰' or word == '玄德':
rword = '刘备'
elif word == '孟德' or word == '丞相':
rword = '曹操'
elif word == '后主' or word == '阿斗':
rword == '刘禅'
elif word == '都督' or word == '公瑾':
rword = '周瑜'
elif word == '子敬' or word == '参军':
rword = '鲁肃'
elif word == '子龙':
rword = '赵云'
else:
rword = word
counts[rword] = counts.get(rword,0)+1
for word in excludes:
del(counts[word])
items = list(counts.items())
items.sort(key = lambda x:x[1],reverse = True)
for i in range(15):
word,count = items[i]
print("{0:<10} {1:>5}".format(word,count))
5、编程检查并判断密码字符串的安全强度。
import string
def check(pwd):
if not isinstance(pwd,str) or len(pwd)<6:
return "太简单了"
strength = {1:'weak',2:'low middle',3:'above middle',4:'high'}
list = [False]*4
for ch in pwd:
if not list[0] and ch in string.digits:
list[0] = True
elif not list[1] and ch in string.ascii_lowercase:
list[1] = True
elif not list[2] and ch in string.ascii_uppercase:
list[2] =True
elif not list[3] and ch in ',.!;?<>/;':
list[3] = True
return strength.get(list.count(True),'输入有误')
while True:
password = input("请输入密码:")
s = check(password)
print(s)
Python中使用下划线的作用有很多种:
在变量名中使用下划线可以表示“私有变量”,也就是在类定义中的“__xxx”格式,只有类对象本身能访问到这些变量,外部无法访问。
在函数名或变量名前加一个下划线,通常表示是一个私有函数或私有变量,建议在外部不要调用或使用。
在Python中可以使用下划线代替数字分隔符,使数字更易于阅读。
Python中的“_”(一个下划线)表示“上一个表达式的结果”,也可以称为“哑元变量”。
在for循环中使用下划线表示“循环中不需要此变量”。
对于代码 "x_y = 10" 中的下划线,只是普通的变量名,没有特殊含义,可以理解为x_y是一个变量名,值为10。如果这个变量是在类中使用,并且命名为“__x_y”,那么就成了私有变量。