Commit 3beb3747 by ligang

'第三次四次五次作业'

parent eeec5392
......@@ -55,7 +55,7 @@ def numJewelsInStones(J, S):
stores[c] = stores[c] + 1
else:
stores[c] = 1
print(stores)
count = 0
for c in J:
if c in stores:
......
#!/usr/bin/env python
# -*-coding:utf-8 -*-
#国际摩尔斯密码
# 单词列表words 的长度不会超过 100。
# 每个单词 words[i]的长度范围为 [1, 12]。
# 每个单词 words[i]只包含小写字母。
def word2moersi(m):
alpha = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---",
".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
words = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
"v", "w", "x", "y", "z"]
#建立两者间的映射关系
newdict = dict(zip(alpha,words))
temp = set()
for w in m:
new_moersi = []
for i in range(len(w)):
v = list(newdict.keys())[list(newdict.values()).index(w[i])]
new_moersi.append(v)
s = ''.join(new_moersi)
temp.add(s)
return temp
#words = ["ab", "cd", "ef", "msg"]
words =["gin", "zen", "gig", "msg"]
t = word2moersi(words)
print("不同单词翻译的数量为:%d" %(len(t)))
print("摩尔斯密码为:" + str(t))
\ No newline at end of file
<aiml version="1.0.0" encoding="UTF-8">
<category>
<pattern>问 题</pattern>
<template>这是回答</template>
</category>
<category>
<pattern>想 你 了</pattern>
<template>我也想你了</template>
</category>
<category>
<pattern>一 个 是 * 另 一 个 是 *</pattern>
<template> 第一个参数是:<star index="1"/>,第二个参数是:<star index="2"/></template>
</category>
<category>
<pattern>我 想 你 了</pattern>
<template>
<random>
<li>我也想你了</li>
<li>你也太直接了</li>
<li>人家才不想你呢</li>
<li>在旁边想去!</li>
</random>
</template>
</category>
<category>
<pattern>我 好 *</pattern>
<template>
<srai>你好的人民</srai>
</template>
</category>
<category>
<pattern>你 好 * 我 是 *</pattern>
<template>
你好啊!<set name="username"><star/></set>很高兴见到你!
</template>
</category>
<category>
<pattern>晚 安</pattern>
<template>
美梦!<get name="username"/>跟你聊天很愉快!
</template>
</category>
<category>
<pattern>你 喜欢 哪个 明星</pattern>
<template>张学友</template>
</category>
<category>
<pattern>我 也 是</pattern>
<that>张学友</that>
<template>太棒了,我也喜欢刘德华啊,但是非常可惜,最后一次演唱会了</template>
</category>
<category>
<pattern>我们 讨论一下 作业 吧</pattern>
<template>好啊,那就聊聊<set name="topic">作业</set>吧</template>
</category>
<topic name="作业">
<category>
<pattern>好难 啊</pattern>
<template>作业真是难,我也这么想的,太难啦</template>
</category>
<category>
<pattern>作业 怎么 做</pattern>
<template>你说什么呢,我不理解</template>
</category>
</topic>
<category>
<pattern>我 的 名字 是*</pattern>
<template>你好,欢迎来到贪心学院<think><set name="username2"><star/></set></think></template>
</category>
<category>
<pattern>不聊 了</pattern>
<template>好啊<get name="username2"/>,下次再聊</template>
</category>
<category>
<pattern>我 爱 *</pattern>
<template>
<think><set name="star2"><star/>健身</set></think>
<condition name="star2" value="健身">
我非常喜欢健身
</condition>
<condition name="star2" value="游泳">
我非常喜欢游泳
</condition>
</template>
</category>
<category>
<pattern>我 是 *</pattern>
<template>
<think>
<set name="star"><star/></set>
</think>
哇塞,你好
<condition name="star">
<li value="健身">帅啊</li>
<li value="读书">有内涵啊</li>
<li>666啊</li>
</condition>
</template>
</category>
</aiml>
\ No newline at end of file
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import aiml
import jieba
kernl = aiml.Kernel()
kernl.learn("std_startup.xml")
kernl.respond("load aiml b")
while True:
response = kernl.respond(" ".join(jieba.cut(input("请输入你的内容>>>"),cut_all = False)))
s = response.replace(" ", "")
print(response)
\ No newline at end of file
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#递归快速排序
def q_sort(sort_list):
if not sort_list:
return []
else:
base_index = sort_list[0]
left = q_sort([ x for x in sort_list if base_index > x])
right = q_sort([x for x in sort_list if base_index < x])
return sort_list
def quick_sort(sort_list,start,end):
if start < end :
base,i,j = sort_list[start],start,end
while i < j:
while i < j and (sort_list[j] >= base):
j-=1
while i < j and (sort_list[i] <= base):
i+=1
sort_list[i],sort_list[j] = sort_list[j],sort_list[i]
sort_list[i],sort_list[start] = sort_list[start],sort_list[i]
quick_sort(sort_list,start,i-1)
quick_sort(sort_list,j+1,end)
return sort_list
l = [8,6,99,44,2,3,5,7,44,77,9]
print(quick_sort(l,0,len(l)-1))
print(q_sort(l))
<aiml version="1.0.0" encoding="UTF-8">
<category>
<pattern>LOAD AIML B</pattern>
<template>
<learn>basic_chat.aiml</learn>
</template>
</category>
</aiml>
\ No newline at end of file
#!/usr/bin/env python
# -*-coding:utf-8 -*-
#将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列
#第一行与最后一行的步长一样,所以分三步,第一行先根据步长计 算出来,
# 最后一行根据步长计算出来,中间的一行或二行分开计算
#最后把行数连接起来
class Solution:
def convert(self,s,nums):
if nums == 1:
return s
#步长
steps = nums * 2 - 2
an =''
an += s[0::steps]#第一行
for i in range(1,nums-1):
interstep = steps - 2*i#中间行步长
j = i
while j < len(s) - steps:
an += s[j] + s[j+interstep]
j += steps
if j < len(s):#补充中间行的倒数第二个元素
an +=s[j]
if j+interstep < len(s):
an += s[j+interstep]#补充中间行的倒数第一个元素
an += s[nums-1::steps]#最后一行
return an
str = "LEETCODEISHIRING"
numRows = 3
str = "LEETCODEISHIRING"
numRows = 4
s = Solution()
v = s.convert(str,numRows)
print(v)
\ No newline at end of file
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#山羊拉丁文
"""
规则如下:
如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"。例如,单词"apple"变为"applema"。
如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。
例如,单词"goat"变为"oatgma"。根据单词在句子中的索引,在单词最后添加与索引相同数量的字母'a',
索引从1开始。例如,在第一个单词后添加"a",在第二个单词后添加"aa",以此类推。
返回将 S 转换为山羊拉丁文后的句子。
"""
class Latin:
def coat_latin(self,str):
vowel = "a,e,i,o,u"#元音字母
new_str = ''
i = 0
s = 'maa'
for word in str.split():
if vowel.find(word[0:1].lower()) >=0:
new_str += word
new_str += s
for k in range(i):
new_str +='a'
new_str += ' '
if vowel.find(word[0:1].lower()) < 0:
new_str += word[1:]
new_str += word[0]
new_str += s
for k in range(i):
new_str +='a'
new_str += ' '
i += 1
new_str = ' '.join(new_str).strip()
return new_str
str = "I speak Goat Latin"
str = "The quick brown fox jumped over the lazy dog"
l = Latin()
c = l.coat_latin(str)
print(c)
#!/usr/bin/env python
# -*-coding:utf-8 -*-
#一、 封装正则类
import re
class Regular:
# 方法能够匹配出所有的数字
def get_numbers(self,url):
digit = None
reg = "(\d+)"
r = re.findall(reg,url)
if r:
digit = r
return digit
# 方法能够匹配出所有的邮箱
def get_emails(self,url):
Email = None
reg_exp = "[0-9a-zA-Z_]{0,19}@[0-9a-zA-Z]{1,13}\.[com,cn,net]{1,3}"
r = re.findall(reg_exp,url)
if r:
Email = r
return Email
# 方法可以匹配出所有的ip
def get_ips(self,url):
ip = None
pattern = "(?:(?:1\d{1,2}|2[1-5]{2}|\d{1,3})\.){3}\d{1,3}"
r = re.findall(pattern,url)
if r:
ip = r
return ip
# 方法能够匹配出所有的电话号码,电话包含座机和移动电话,座机要考虑区号3位或4位,号码要考虑7位或8位
def get_phone_numbers(self,url):
phone = None
pattern = '0\d{2,3}-\d{7,8}|1[3587]\d{9}|147\d{8}'
r = re.findall(pattern,url)
if r:
phone = r
return r
# 方法能够匹配出所有的url,url可以以http开头、https开头、ftp开头
def get_urls(sef,url):
urls = None
reg = "(?:https?|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]"
r = re.findall(reg,url)
if r:
urls = r
return urls
url = "ggufddsgd~~%%%h))sf,5655ewe@163.com,--free@hotmail.com,%% %1324.231.432.1234,192.168.1.6,10.25.11.8, " \
"010-88776655 0431-89876567 0432-9876789,18719462345,17665148777,https://www.greedyai.com,ftp://www.greedyai.com,ftp://192.168.0.0.1"
regular = Regular()
#result = regular.get_numbers(url)
#result = regular.get_emails(url)
#result = regular.get_ips(url)
#result = regular.get_phone_numbers(url)
result = regular.get_urls(url)
print(result)
#!/usr/bin/env python
# -*-coding:utf-8 -*-
# pass要求:有一个sort方法,方法接收两个参数,一个参数是列表,另外一个参数是排序方法
# 例如:当传入bubble时,则调用冒泡排序的方法进行排序,并打印出每一步数字挪动的过程
# 当传入quick时,则调用快速排序的方法进行排序,并打印出每一步数字挪动的过程外部不可以直接访问具体排序方法,
# 只能调用sort方法
class SortUtils:
# def __quick_sort(self,str):
# if not len(str):
# return []
# else:
# base = str[0]
# left = SortUtils.__quick_sort(self,[x for x in str[1:] if x < base])
# right = SortUtils.__quick_sort(self,[x for x in str[1:] if x > base])
# return left + [base] + right
#
#快速排序
def __quick_sort(self,a, start_index, end_index):
# 左侧小于右侧则开始排序,否则退出
if start_index < end_index:
basic, i, j = a[start_index], start_index, end_index
while i < j:
while i < j and basic <= a[j]:
j -= 1
while i < j and basic >= a[i]:
i += 1
a[i], a[j] = a[j], a[i]
a[i], a[start_index] = a[start_index], a[i]
SortUtils.__quick_sort(self,a, start_index, i - 1)
SortUtils.__quick_sort(self,a, i + 1, end_index)
return a
#冒泡排序
def __bubbleSort(self,nums):
for i in range(len(nums) - 1): # 这个循环负责设置冒泡排序进行的次数
for j in range(len(nums) - i - 1): # j为列表下标
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
return nums
def sort(self,str,method = "bubble"):
if method == 'bubble':
result = SortUtils.__bubbleSort(self,str)
return result
elif method == 'quick':
result = SortUtils.__quick_sort(self,str,0, len(str) - 1)
return result
else:
return None
str = [8,6,3,88,99,86,56,54]
utils = SortUtils()
#r = utils.sort(str,'bubble')
s = utils.sort(str,'quick')
#print(r)
print(s)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment