def idcheck():
    '''6-2 修改idcheck使之可以检测长度为一得标识符,并且可识别
    Python 关键字
    '''
    import string
    import keyword
    keys = keyword.kwlist
    alphas = string.letters+'_'
    nums = string.digits
    alphanums = alphas+nums
    print 'Welcome to the Identifier Check V1.1'
    myInput = raw_input('identifier to test: ')
    isOne = False  # 是否是一个字符
    if len(myInput) == 1:isOne = False
    if myInput in keys:
        print '''invalid:symbol has been defined'''
        return False
    elif myInput[0] not in alphas:
        print '''invalid:first symbol must be alphabetic'''
        return False
    elif not isOne:
        otherInput = myInput[1:]
        for otherChar in otherInput:
            if otherChar not in alphanums:
                print '''invalid:remainn symbols must be alphanumeric'''
                return False
    print "okay as an Identifier"
    return True
def order(nlist):
    '''6-3(a) 输入一串数字,从大到小排列
    注意:输入的是一个列表,其中的值为数字
    '''
    newlist = []
    for x in nlist:
        newlist.append(int(x))
    return sorted(newlist,reverse=True)

def order2(nlist):
    '''6-3(b) 和a一样,不过要用字典序
    注意:字典序就是按字典的排列方式,比如 21 就大于 111 ,因为 2大于1
    方式就是把输入的数字变成字符串即可
    '''
    # 将里面的元素统统变成字符串先
    newlist = []
    for x in nlist:
        newlist.append(str(x))
    newlist = sorted(newlist,reverse=True)
    for i,x in enumerate(newlist):
        newlist[i] = int(x)
    return newlist
def avescore():
    '''输入测试得分,算出平均值'''
    scorelist = [] # 分数列表
    while True:
        myinput = raw_input('Input the score(if No number quite): ')
        try:
            scorelist.append(float(myinput))
        except:
            break
    if not len(scorelist):return False
    return sum(scorelist)/len(scorelist)
def showstr():
    '''6-5(a) 更新2-7 使之可以每次向前向后都显示一个字符串的一个字符'''
    istr = raw_input('Input string: ')
    lens = len(istr)
    if lens==0:return False
    if lens==1:
        print istr
        return True
    for i,j in enumerate(istr):
        if i ==0 and len(istr)!=1:
            print j,istr[i+1]
        elif i == len(istr)-1 and i != 0:
            print istr[i-1]
        else:
            print istr[i-1],j,istr[i+1]
    return True
def mycmp():
    '''6-5(b)通过扫描判断两个字符串是否匹配,不能使用比较操作符或者 cmp()'''
python index函数    str1 = raw_input('First string:')
    str2 = raw_input('Second string:')
    equal = len(str1) - len(str2)
    if not equal:return False  # 表示长度不相等
    # 将字符串变成列表
    for i,j in enumerate(str1):
        if ord(j)-ord(str2[i]):#如果减下来不为0
            return False
    return True
def isback():
    '''6-5(c)判断一个字符串是否是回文,忽略控制符号和空格[支持中文]'''
    import string
    # 控制符表示 ASCII 码中 0~31 以及127 这33个无法输出的字符
    denny = [chr(i) for i in xrange(0,32)]+list(string.whitespace)
    denny.append(chr(127))
    strs = raw_input('Please input string:')
    # 将输入的数据解码成unicode 因为在windows上默认是gbk,所以这里是gbk
    # 如果是在其他命令行中,应该以命令行输入的字符编码为主
    strs = strs.decode('gbk')
    new = []
    for i in strs:
        if i in denny:continue
        new.append(i)
    lens = len(new)
    if lens%2:return False
    else:
        half = lens/2
        if new[0:half] == new[-1:-half-1:-1]:return True
        return False
def beback():
    '''6-5(d) 输入一个字符串在后面重复一个反向拷贝,构成回文'''
    strs = raw_input('Input string: ')
    # 将输入的数据解码成unicode 因为在windows上默认是gbk,所以这里是gbk
    # 如果是在其他命令行中,应该以命令行输入的字符编码为主
    strs = strs.decode('gbk') # 解码为 unicode
    lens = len(strs)
    # 这里之所以是 -1:-lens-1:-1 
    # 分析如下:  -1就是倒数第一个,-(lens+1) 就是长度,-1是步进
    # 就是说从倒数第一个开始-1(步进),一直减到倒数 lens+1,由于切片里是 [a:b] 是 a<=x<
b的,
    # 所以这里是 lens+1 而不是 lens
    return strs+strs[-1:-lens-1:-1]
def strip():
    '''6-6 去掉输入的字符串的前面和后面的空格'''
    strs = raw_input('Input string: ').decode('gbk')
    new = u''
    # 由于只是去掉前面和后面的空格,所以不能遍历全部
    # 分析,从前面遍历到非空格停止,从后面遍历到非空格位置
    # 为了方便,我首先将字符串变成了列表
    strs = list(strs)
    lens = len(strs)
    for i in range(0,lens):  # 从前面开始遍历
        if strs[i] == ' ':strs[i] =''
        else:break
    for i in range(-1,-lens-1,-1):
        if strs[i] == ' ':strs[i] = ''
        else:break
    # 将 list 转成字符串
    nstrs = ''
    for i in range(0,lens):
        nstrs +=strs[i]
    return nstrs
def num2eng():
    '''6-8 输入一个整数,返回相应的英文,限定0~1000'''
    lists = ['zero','one','two','three','four','five','six','seven','eight','nine']
    new =''
    while True:
        try:
            iput = int(raw_input('Please input a int(0~1000): '))
            if iput <0 or iput >1000:
                continue
        except:
            continue
        break

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。