想计算机科学家一样思考python(3)

第五章 条件和递归

“//”代表向下取整除法

“%”求模操作符

 

判断互文的代码:

# -*- coding: utf-8 -*-

def first(word):

    return word[0]

def last(word):

    return word[-1]

def middle(word):

    return word[1:-1]

def huwen(word):

    if len(word)<=1:

        return True

    if first(word)!=last(word):

        return False

    else:

        return huwen(middle(word))

print(huwen('a'))

print(huwen('afbhj'))

print(huwen('adhsuia'))

print(huwen('heeh'))

 

def huwen(word1,word2):

    if len(word1) != len(word2):

        return False

    i=0

    j=len(word2)-1

    while j>0:

        if word1[i]!=word2[j]:

            return False

        i+=1

        j-=1

    return True

print(huwen('hkl', 'lkh'))

 

def is_huwen(word):

    i=0

    j=len(word)-1

    while i<=j:

        if word[i]!=word[j]:

            return False

        i+=1

        j-=1

    return True

print(is_huwen('guug'))

 

 

 

epsilon=0.0000001

 

 

用python写下面式子代码

 

# -*- coding:utf-8 -*-

import math

def jiecheng(n):

    if n==0:

        return 1

    else:

        b=jiecheng(n-1)

        c=n*jiecheng(n-1)

        return c

 

def estimatepi():

    d=(2*math.sqrt(2))/9801

    k=0

    total=0

    while True:

        e=(jiecheng(4*k))*(1103+26390*k)

        f=(jiecheng(k))**4

        g=f*(396**(4*k))

        total1=d*e/g

        total+=total1

        if abs(total1)<1e-15:

            break

        k+=1

    return 1/total

print(estimatepi())

 

两种遍历字符串的方法

 

Find用法

# -*- coding: utf-8 -*-

word='banana'

print(word.find('na'))#2  找第一次遇到字符串时的下标

print(word.find('na',3))#4  表示从哪一个下标开始查找

print(word.find('a',0,1))#-1 表示从哪个小标开始查找到哪个下表结束

 

 

找具有三个重复字母的单词

# -*- coding:utf-8 -*-

def liayiyang(word):

    count=0

    i=0

    while i<len(word)-1:

        if word[i]==word[i+1]:

            count+=1

            if count==3:

                return True

            i=i+2

        else:

            count=0

            i=i+1           

    return False

def wenjian():

    fin = open('C:\\Users\\chenxi\\Desktop\\words.txt')

    for line in fin:

        word=line.strip()

        if liayiyang(word):

            print(word) 

wenjian()

 

转载于:https://www.cnblogs.com/beautifulchenxi/p/9356354.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值