这次的作业挺没意思的。。

1、编写函数rotateword,接收一个字符串strsrc以及一个整数n作为参数,返回新字符串strdes,其各个字母是strsrc中对应位置各个字母在字母表中“轮转”n字符后得到的编码。
2、编写函数avoids,接收一个单词和一个含有禁止字母的字符串,判断该单词是否含有禁止字母。
3、编写函数useonly,接收一个单词和一个含有允许字母的字符串,判断该单词是否仅仅由允许字母组成。
4、编写函数useall,接收一个单词和一个含有需要字母的字符串,判断该单词是否包含了所有需要字母至少一个,并输出words.txt中使用了所有元音字母aeiou的单词。
5、编写函数hasnoe,判断一个英语单词是否包含字母e,并计算words.txt中不含e的单词在整个字母表中的百分比。
6、编写函数isabecedarian,判断一个英语单词中的字母是否符合字母表序,并且输出words.txt中所有这样的单词。

 

1.轮转字符:

def lzh1(strsrc,n):
    strdes=[chr((ord(j)+n)%ord('z')) for j in strsrc]
    return "".join(strdes)

a="abcde"
print(lzh1(a,2))

函数ord()返回字符的整型值,将其加n后对字符z的整型值取余就得到了轮转字符的整型值,用列表推导式将其存在列表strdes中,然后用join函数将列表中各个字符用空字符串连接,就得到了要求的字符串。

 

2.检查字符 其1:

def lzh2(word,warn):
    if warn in word:
        return False
    else:
        return True

a="abcde"
print(lzh2(a,'c'))

直接使用in判断字符是否在给定的字符串里,返回bool值。

 

3.检查字符 其2:

def lzh3(word,warn):
    a=True
    for j in word:
        if(j not in warn):
            a=False
    return a

a="abcde"
print(lzh3(a,'cdf'))

直接用一个for循环,对于在单词中的每个字符,检查它是否在合法字符串中,只要不在即改变布尔值,最后将这个布尔值返回即可。

 

4.检查字符 其3:

def lzh4(word,warn):
    a=True
    for j in warn:
        if(j not in word):
            a=False
    return a

f=open("words.txt")
r=f.read()
for k in r.split():
    if(lzh4(k,'aeiou')==True):
        print(k)

和上一题一样的原理,只是word和warn扮演的角色恰好相反。在测试中用split()将得到的字符串变成一个一个单词字符串组成的列表,方便操作。

 

5.统计单词:

def lzh5(word):
    return True if 'e' in word else False

f=open("words.txt")
r=f.read()
count=0
for k in r.split():
    if(lzh5(k)==False):
        count+=1
print(count/len(r.split())*100,"%")

函数部分直接返回e是否在word中的布尔值即可,在调用中用计数器对其统计,求商再乘以100就可以以百分数形式显示了。

 

6.字母表序:

def lzh6(word):
    for i in range(0,len(word)-1):
        if(ord(word[i])>ord(word[i+1])):
            return False
    return True

f=open("words.txt")
r=f.read()
count=0
for k in r.split():
    if(lzh6(k)==True):
        print(k)

对于每个单词,利用下标访问字符和下一个字符作比较,只要存在前面的字符的整型值比后面的字符的整型值大的,就不符合我们的要求了,直接返回False,最终还符合要求就返回True。

 

1.运行结果:cdefg

2.运行结果:False

3.运行结果:False

4.文件words.txt:

aieousp

lzhh

sbsbsbs

abjde

flora

aeiouu

gayhub

paeio

python

auoeir

运行结果:

aieousp

aeiouu

Auoeir

5.运行结果:50.0 %

6.运行结果:aeiouu