1. 程式人生 > >【練習題】編寫一個名為is_palindrome的函式,判斷一個人名是否為迴文,如‘BOB’是迴文

【練習題】編寫一個名為is_palindrome的函式,判斷一個人名是否為迴文,如‘BOB’是迴文

#編寫一個名為is_palindrome的函式,判斷一個人名是否為迴文,如‘BOB’是迴文

#方法一:
def is_palindrome(name):
    low = 0
    high = len(name)-1
    
    while low < high:
        if name[low] != name[high]:
            return False
        low += 1
        high -=1
    return True

#方法二:遞迴的方法
def is_palindrome_rec(name):
    if len(name)<=1:
        return True
    else:
        if name[0]!=name[-1]:
            return False
        else:
            return is_panlindrom(name[1:-1])

#方法三:反轉字串
def is_palindrome_str(name):
    if name == name[::-1]:
        return True
    else:
        return False
        
        
#主函式     
total=0
f=open('names.txt','r')

for line in f:
    line=line.strip()
    if is_palindrome(line):
        total +=1
        print line
       
f.close()
print total

相關推薦

練習題編寫一個is_palindrome函式判斷一個人名是否BOB’是

#編寫一個名為is_palindrome的函式,判斷一個人名是否為迴文,如‘BOB’是迴文 #方法一: def is_palindrome(name): low = 0 high =

練習題編寫一個函式一個char組成的字串迴圈右移n位

例如:原來是”abcdefghi”,如果n = 2,移位後應該是”hiabcdefg”。 思路:當讀到這個題目的時候,沒有編寫過類似程式的人可能會想,程式的實現就是依照字元的迴圈右移這樣實現的,但仔細想會發現這樣很難實現,不妨換一種思路,我們先把需要移到前面的字元取出來放進

練習題編寫打印出一個單鏈表的所有元素的程式連結串列

只是實現了連結串列ADT的部分功能。 /*---編寫打印出一個單鏈表的所有元素的程式---*/ #include <stdio.h> #include <stdlib.h> struct Node{ int val; struct Node *

C語言練習題編寫一個程式它從標準輸入讀取C原始碼並驗證所有花括號都正確成對出現

《C和指標》課後練習題   問:編寫一個程式,它從標準輸入讀取C原始碼,並驗證所有花括號都正確成對出現。   程式碼 思路:在while迴圈條件中讀取我輸入的字元,只有當輸入緩衝區沒有資料或者我這裡產生回車符'\n'時,才會判斷條件不成立。c

C語言練習題編寫一個函式它從一個字串中提取一個子字串

《C與指標》 習題 4.14   編寫一個函式,它從一個字串中提取一個子字串。函式原型如下: int substr(char dst[], char src[],int start, int l

編寫高質量代碼改善C#程序的157個建議——建議35:使用default泛型類型變量指定初始值

如果 items item 類型變量 color 高質量 使用 per match 建議35:使用default為泛型類型變量指定初始值 有些算法,比如泛型集合List<T>的Find算法,所查找的對象可能會是值類型,也有可能是引用類型。在這種算法內部,我

編寫高質量代碼改善C#程序的157個建議——建議45:泛型類型參數指定逆變

str 質量 red 方法的參數 turn test col nbsp 改善 建議45:為泛型類型參數指定逆變 逆變是指方法的參數可以是委托或者泛型接口的參數類型的基類。FCL4.0中支持逆變的常用委托有: Func<int T,out TResult> P

編寫高質量代碼改善C#程序的157個建議——建議54:無用字段標註不可序列化

快捷鍵 語法 文件中 chan 有意 否則 [] strong 還原 建議54:為無用字段標註不可序列化 序列化是指這樣一種技術:把對象轉變成流。相反過程,我們稱為反序列化。在很多場合都需要用到這項技術。 把對象保存到本地,在下次運行程序的時候,恢復這個對象。 把對象

編寫高質量代碼改善C#程序的157個建議——建議64:循環增加Tester-Doer模式而不是將try-catch置於循環內

特殊 bsp 處理 註意 輸出 read seconds ise new 建議64:為循環增加Tester-Doer模式而不是將try-catch置於循環內 如果需要在循環中引發異常,你需要特別註意,應為拋出異常是一個相當影響性能的過程。應該盡量在循環當中對異常發生的

編寫高質量代碼改善C#程序的157個建議——建議90:不要抽象類提供公開的構造方法

改善 公開 構造方法 編譯 只需要 高質量代碼 pub 默認 {} 建議90:不要為抽象類提供公開的構造方法 首先,抽象類可以有構造方法。即使沒有為抽象類指定構造方法,編譯器也會為我們生成一個默認的protected的構造方法。下面是一個標準的最簡單的抽象類:

編寫高質量代碼改善C#程序的157個建議——建議156:利用特性應用程序提供多個版本

如果 目的 ole pos 兩個 img 分享圖片 離線版 attr 建議156:利用特性為應用程序提供多個版本 基於如下理由,需要為應用程序提供多個版本: 應用程序有體驗版和完整功能版。 應用程序在叠代過程中需要屏蔽一些不成熟的功能。 假設我們的應用程序共有兩類

練習題proj1 判斷二叉樹子樹和是否指定的值

urn http space str ret image binary res input #include <stdio.h> #include <vector> #include <list> #include&l

練習題創建一個4S店

結果 move 第一步 播放 clas 執行c 大於 car 車輛 #! /usr/bin/env python # -*- coding:utf-8 -*- class Car_store: def car_order(self,money): i

QT編寫一個簡易的串列埠軟體

簡述 QT學了一點發現學不進去,索性看看能不能直接擼個程式,於是就有了這個簡易的串列埠軟體… 分析需求 這是XCOM串列埠收發軟體,以此為例 目的很明確: 串列埠列表要能顯示所有已經接上PC上的COM

Java編寫一個方法實現基本的字串壓縮功能

利用重複字元出現的次數,編寫一個方法,實現基本的字串壓縮功能。 例如,字串aabcccccaaa會變為a2b1c5a3。若壓縮後的字串沒有變短,則返回原先的字串。 StringBuffer: 如果頻繁地對字串進行拼接,直接用“+”的話會建立很多String型的物件,對伺服器

Java編寫一個程式輸出一個字串中的大寫英文字母數小寫英文字母數以及非英文字母數

/* * 作者:筱筱 * 日期:20170507 * 功能:編寫一個程式,輸出一個字串中的大寫英文字母數,小寫英文字母數以及非英文字母數。 */ public class Aa3Count { public static void main(S

練習題構造方法 編寫Java程式模擬簡單的計算器。

package day09; /*1.【練習題】構造方法 編寫Java程式,模擬簡單的計算器。 定義名為Number的類,其中有兩個整型資料成員n1和n2,應宣告為私有。編寫構造方法,賦予n1和n2初始值,再為該類定義加(addition)、減(subtration)、乘(

100題給定入棧序列判斷一個序列是否可能輸出序列

#include <stack> #include <iostream> using namespace std; /* 假設序列中無重複數字 輸入序列為: 1,2,3,4,5 測試序列:4,5,3,2,1 測試序列:4,3,5,1,2 題目拓展

C++編寫一個簡單的類。包含建構函式成員函式等。

//編寫一個簡單的類。包含建構函式,成員函式等。 #include <iostream> using namespace std; class Rec { public: Rec(i

編寫高質量代碼改善C#程序的157個建議——建議7: 將0值作為枚舉的默認值

enum 整型 沒有 spa day rda alt 編寫 它的 建議7: 將0值作為枚舉的默認值 允許使用的枚舉類型有byte、sbyte、short、ushort、int、uint、long和ulong。應該始終將0值作為枚舉類型的默認值。不過,這樣做不是因為允許使