博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
核心编程答案(第六章)
阅读量:4581 次
发布时间:2019-06-09

本文共 6115 字,大约阅读时间需要 20 分钟。

例6.1

import string def idcheck(myInput):     alphas = string.letters + '-'     nums = string.digits     print 'Testees must be at least 2 chars long.'     myInput = raw_input('Identifier to test:')     if len(myInput) > 1:         if myInput[0] not in alphas:             print '''invalid: first symbol must be alphabetic'''         else:             for otherChar in myInput[1:]:                 if otherChar not in alphas + nums:                     print '''invalid: remaining symbol must be alphanumeric'                     break             print 'okay as an identifier' 备注:从性能上来讲,更少的操作可以减少时间,这里“if len(myInput) > 1:”每次都执行判断长度,可以一次性先赋值:stringlen = len(myInput)。这样就可以减少时间了。

 6-2

两个方法

str.
find
(sub[, start[, end]]) Return the lowest index in the string where substring
sub is found, such that
sub is contained in the slice
s[start:end]. Optional arguments
start and
end are interpreted as in slice notation. Return
-1 if
sub is not found.
str.
index
(sub[, start[, end]]) Like , but raise when the substring is not found. 6-2 首先看下keyword具有的方法: >>> import keyword
>>> dir(keyword)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'iskeyword', 'kwlist', 'main']
#!/usr/bin/env python# encoding: utf-8import stringimport keyworddef idcheck(myInput):    alphas = string.letters + '_'    nums = string.digits    if len(myInput) > 1:        if myInput[0] not in alphas:            print '''invalid: first symbol must be alphabetic'''        elif keyword.iskeyword(myInput):            print 'is keyword'        else:            for otherChar in myInput[1:]:                if otherChar not in alphas + nums:                    print '''invalid: remaining symbol must be alphanumeric'''                    break            print 'ok as an Identifier'    else:        if len(myInput) == 1:            if myInput[0] not in alphas:                print '''invalid: remaining symbol must be alphanumeric'''            else:                print 'ok as an Identifier'if __name__ == "__main__":    myInput = raw_input('Enter a string:')    idcheck(myInput

 

6-8

这里没考虑为10开头的,还有几个地方显示不好的,比如100。

#!/usr/bin/env python# encoding: utf-8enlist = ["", "one", "two", "three", "four", "five", "six", "seven", "eight",          "nine", "zero", "", "twenty", "thirty", "forty", "fifty", "sixty",          "seventy", "eighty", "ninety", "zero", "one hundred", "two hundred",          "three hundred", "four hundred", "five hundred", "six hundred",          "seven hundred", "eight hundred", "nine hundred"]num_str = raw_input('Enter a number: ')numlen = len(num_str)enexpress = ""for i in range(numlen - 1, -1, -1):   # 从大到小    enexpress = enexpress + "-" + enlist[int(num_str[numlen - 1 - i]) + 10 * i]   # 直接从列表中读出enexpress = enexpress.strip("-")print enexpress

 

6-10

#!/usr/bin/env python# encoding: utf-8import stringdef Str_inverted(input_str):    len_str = len(input_str)    ch_str = ''    for i in range(len_str):        if input_str[i] in string.ascii_lowercase:            ch_str = ch_str + input_str[i].upper()        elif input_str[i] in string.ascii_uppercase:            ch_str = ch_str + input_str[i].lower()        else:            ch_str = ch_str + input_str[i]    return ch_strif __name__ == "__main__":    input_str = raw_input('enter a str: ')    print Str_inverted(input_str)

另外,可以直接使用swapcase(),一步到位。所以要熟悉基本的函数方法标准库

 

6-11

思路:整数转换为二进制,八位二进制代表一位地址。

a、b

#!/usr/bin/env python# encoding: utf-8import ipdbdef int_ip(intnum):    #  ipdb.set_trace()    str_bin = bin(intnum)    bin_len = len(str_bin)    if 26 < bin_len <=34:  # 因为bin()前面会多出0b,所以要多出两位        ip1 = str(eval(str_bin[:-24]))        ip2 = str(eval('0b' + str_bin[-24:-16]))        ip3 = str(eval('0b' + str_bin[-16:-8]))        ip4 = str(eval('0b' + str_bin[-8:]))        return ip1 + '.' + ip2 + '.' + ip3 + '.' + ip4    elif 18 < bin_len <=26:        ip1 = str('0')        ip2 = str(eval(str_bin[:-16]))        ip3 = str(eval('0b' + str_bin[-16:-8]))        ip4 = str(eval('0b' + str_bin[-8:]))        return ip1 + '.' + ip2 + '.' + ip3 + '.' + ip4    elif 10 < bin_len <=18:        ip1 = str('0')        ip2 = str('0')        ip3 = str(eval(str_bin[:-8]))        ip4 = str(eval('0b' + str_bin[-8:]))        return ip1 + '.' + ip2 + '.' + ip3 + '.' + ip4    elif bin_len <=10:        ip1 = str('0')        ip2 = str('0')        ip3 = str('0')        ip4 = str(eval(str_bin))        return ip1 + '.' + ip2 + '.' + ip3 + '.' + ip4    else:        return 'Out of range! 'def ip_to_int(ip_input):    ipdb.set_trace()    ip_list = ip_input.split('.')    ip_int = int(ip_list[0]) * (256**3) + int(ip_list[1]) * (256 ** 2) + int(ip_list[2]) *256 + int(ip_list[3])    return ip_intif __name__ == "__main__":    intnum = int(raw_input("Enter a int number: "))    print int_ip(intnum)    ip_input = raw_input('Enter ip: ')    print ip_to_int(ip_input)

 

6-12

a、思路:先判断在不在里面,在的话,使用for来判定位置

def findchr(string, char):    if char in string:        strindex = []        string_len = len(string)        char_len = len(char)        for i in range(string_len):            if string[i:i + char_len] == char:                strindex.append(i)        return strindex    else:        return -1if __name__ == "__main__":    string = raw_input('Enter a string: ')    char = raw_input('enter a char: ')    print findchr(string, char)

6-14

思路:应用字典作全部例举,将输入直接作为键值,返回值。

import randomdef Rochambeau(str_input):    str_list = ['shitou', 'jiandao', 'bu']    random_str = random.choice(str_list)    cmp_dict = {
'shitoujiandao': '1', 'shitoushitou': '0', 'shitoubu': '-1', 'jiandaojiandao': '0', 'jiandaoshitou': '-1', 'jiandaobu': '1', 'bujiandao': '-1', 'bushitou': '1', 'bubu': '0'} num_mean = {
'1': 'you are win!', '0': 'draw!', '-1': 'you are losed!'} if str_input in str_list: cmp_str = str_input + random_str return "machin is '%s'" % random_str + '\n' + num_mean[cmp_dict[cmp_str]] else: return "please enter 'shihtou','jiandao','bu'"if __name__ == "__main__": str_input = raw_input('Enter a string: ') print Rochambeau(str_input)

 

转载于:https://www.cnblogs.com/ohmydenzi/p/5465080.html

你可能感兴趣的文章
《Java并发编程实战》第八章 线程池的使用 读书笔记
查看>>
Excel中mod函数的使用方法
查看>>
Nginx 添加 PHP 支持
查看>>
stray '\343' in program 编译错误
查看>>
生成网站,如何不生成.pdb文件?
查看>>
互联网项目管理要点
查看>>
WPF,Silverlight与XAML读书笔记第三十二 - 可视化效果之布局定位
查看>>
MapReduce入门小例子
查看>>
纪中2016.10.29比赛总结
查看>>
jzoj100048. 紧急撤离
查看>>
令人疑惑的 std::remove 算法
查看>>
Int..的范围
查看>>
HDU 2585 [Hotel]字符串递归处理
查看>>
ffmpeg 编码h264 profile如何设置为baseline的问题
查看>>
CSharper 学Quick-Cocos2d-X (一) 开发环境的搭建
查看>>
PoolThreadCache
查看>>
使grub4dos引导启动linux
查看>>
P2597 [ZJOI2012]灾难
查看>>
LeetCode--LinkedList--206. Reverse Linked List(Easy)
查看>>
最短路径
查看>>