python核心编程(第二版)

///  python是我第一门系统学习的编程语言,下列习题的答案也非官方标准答案,只是我个人的解答。作为一只菜鸡水平有限,如有错漏之处还请批评指正。///

Q: “==”和“is”和isinstance()的区别与联系?

A:(参考了别人的回答)" is" 是用来比较 a 和 b 是不是指向同一个内存单元,而"=="是用来比较 a 和 b指向的内存单元中的值是不是相等。不同对象的id不同,因而id的值也不同,但可以通过重写__eq__()方法进行运算符重载。(1)

判断变量类型时,推荐使用isinstance方法。(2)

(1) https://blog.csdn.net/kobebryantlin0/article/details/73391584

(2) https://segmentfault.com/q/1010000000127305


4-9 实践

a = 10
b = 10
c = 100
d = 100
e = 10.0
f = 10.0

print a is b   #True
print c is d   #True
print e is f   #False

咦说好的创建不同的对象呢,怎么出了叛徒???这其实是因为在python的垃圾回收机制中,存在“小整数池”的概念,为了优化速度,提前把这些数据存放在小整数对象池中,使用的时候不会重新分配新的内存空间。


5-3 写一段脚本,根据输入的成绩判断评分等级(A-F)

输入校验部分:也是写完才发现原来负数的isdigit返回False,原因是字符串带有的'-'字符不是数字……

关于如何让负数也被判断成整数请参考这篇博文:

https://www.cnblogs.com/liwenzhou/p/5125807.html

def transcore(score):
    if not score.isdigit(): #判断输入是否为数字
        return "a number please..."
    else:
        score_num = float(score) #将raw_input捕获的字符串转换为浮点数以供比较
        if 0 <= score_num < 60:
            return "F"
        elif 60 <= score_num < 70:
            return "D"
        elif 70 <= score_num < 80:
            return "C"
        elif 80 <= score_num < 90:
            return "B"
        elif 90 <= score_num <= 100:
            return "A"
        else:
            return "invalid score"

while True:
    ur_score = raw_input('Enter the score...')
    print transcore(ur_score)
            


5-4 判断所给年份是否为闰年,使用以下公式:可以被4整除但不能被100整除,或者可以被400整除。

def isleapyear(year):
    if not year.isdigit():
        return "invalid input..."
    else:
        year_num = int(year)
        if (year_num % 4 == 0 and year_num % 100 != 0) or\
           year_num % 400 == 0:
            return "yes"
        else:
            return "no"

while True:
    year = raw_input('Which year?...')
    print isleapyear(year)
    

5-5 美分换算

while True:
    money = int(input('HOW MANY CENTS? input a integer between 0 and 100...'))
    if money <= 0 or money >= 100: print "invalid input"
    else:
        answer = []
        money_left = money
        for each in (25, 10, 5, 1):
            a = money_left / each
            answer.append(a)
            money_left -= a * each

    print "\n25 cents * %d, 10 cents * %d, 5 cents * %d, 1 cents * %d \n"\
          % (answer[0], answer[1], answer[2], answer[3])

5-6 表达式计算器程序

# -*- coding: utf-8 -*-
from operator import * #operator模块提供了操作符的函数接口

operator = {"+":add, "-":sub, "*":mul, "/":floordiv, "%":mod, "**":pow} 

def isnum(char):  #判断是否为数字并转换为相应的类型
    if (char.lstrip('-')).isdigit(): return int(char) #整数
    else:
        try:
            trans = float(char) #浮点数
            return trans
        except ValueError: #不是数字
            return False
        

def splitexpr(char): #分割字符串
    for each in operator.keys():
        splited = char.split(each)
        if len(splited) == 2 and (isnum(splited[0]) and isnum(splited[1])): #成功匹配操作符,且左右均为数字
            answer = (isnum(splited[0]), each, isnum(splited[1])) 
            return answer 
            break
    return False          

def calc(answer): #计算与输出
    if answer == False: print "try again..."
    else:
        print answer[0], answer[1], answer[2], "=", operator[answer[1]](answer[0], answer[2])
        

while True:
    expression = raw_input('please enter an expression...')
    calc(splitexpr(expression))

5-10 摄氏到华氏的转换(利用__future__除法)

from __future__ import division

def change(f):
    c = (float(f) - 32.0) * (5.0 / 9.0)
    return c

f = input("摄氏温度?...")
print "华氏温度为 %.2f" %change(f)

5-17随机数

import random

N1 = random.randint(2,100)
list = [random.randint(0,2**31) for i in range(N1)]
print list
print list.sort()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介 本书是经典的Python指导书,在第一版的基础上进行了全面升级。全书分为两个部分:第1部分占据了大约三分之二的篇幅,阐释这门语言的“核心”内容,包括基本的概念和语句、语法和风格、 Python对象、数字类型、序列类型、映射和集合类型、条件和循环、文件和输入/输出、错误和异常、函数和函数式编程、模块、面向对象编程、执行环境等内容:第2部分则提供了各种高级主题来展示可以使用Python做些什么,包括正则表达式、网络编程、网络客户端编程、多线程编程、图形用户界面编程、 Web编程、数据库编程、扩展Python 和一些其他材料。  本书适合Python初学者,以及已经入门但想继续学习和提高自身Python技巧的程序员。 目录 第1部分 Python核心  第1章 欢迎来到Python世界    1.1 什么是Python    1.2 起源    1.3 特点    1.4 下载和安装Python    1.5 运行Python    1.6 Python文档    1.7 比较PythonPython与其他语言的比较)    1.8 其他实现    1.9 练习   第2章 快速入门    2.1 程序输出,print语句及“Hello World!”    2.2 程序输入和raw_input()内建函数    2.3 注释    2.4 操作符    2.5 变量和赋值    2.6 数字    2.7 字符串    2.8 列表和元组    2.9 字典    2.10 代码块及缩进对齐    2.11 if语句    2.12 while循环    2.13 for循环和range()内建函数    2.14 列表解析    2.15 文件和内建函数open()、file()    2.16 错误和异常    2.17 函数    2.18 类    2.19 模块    2.20 实用的函数    2.21 练习   第3章 Python基础    3.1 语句和语法    3.2 变量赋值    3.3 标识符    3.4 基本风格指南    3.5 内存管理    3.6 第一个Python程序    3.7 相关模块和开发工具    3.8 练习   第4章 Python对象    4.1 Python 对象    4.2 标准类型    4.3 其他内建类型    4.4 内部类型    4.5 标准类型操作符    4.6 标准类型内建函数    4.7 类型工厂函数    4.8 标准类型的分类    4.9 不支持的类型    4.10 练习   第5章 数字    5.1 数字简介    5.2 整型    5.3 双精度浮点型    5.4 复数    5.5 操作符    5.6 内建函数与工厂函数    5.7 其他数字类型    5.8 相关模块    5.9 练习   第6章 序列:字符串、列表和元组    6.1 序列    6.2 字符串    6.3 字符串和操作符    6.4 只适用于字符串的操作符    6.5 内建函数    6.6 字符串内建函数    6.7 字符串的独特特性    6.8 Unicode    6.9 相关模块    6.10 字符串关键点总结   6.11 列表    6.12 操作符    6.13 内建函数    6.14 列表类型的内建函数    6.15 列表的特殊特性    6.16 元组    6.17 元组操作符和内建函数    6.18 元组的特殊特性    6.19 相关模块    6.20 *拷贝Python对象、浅拷贝和深拷贝    6.21 序列类型小结    6.22 练习   第7章 映像和集合类型    7.1 映射类型:字典    7.2 映射类型操作符    7.3 映射类型的内建函数和工厂函数    7.4 映射类型内建方法    7.5 字典的键    7.6 集合类型    7.7 集合类型操作符    7.8 内建函数    7.9 集合类型内建方法    7.10 集合类型总结表    7.11 相关模块    7.12 练习   第8章 条件和循环    8.1 if语句    8.2 else语句    8.3 elif(即else-if)语句    8.4 条件表达式(即“三元操作符”)    8.5 while语句    8.6 for语句    8.7 break语句    8.8 continue语句    8.9 pass语句    8.10 再谈else语句    8.11 迭代器和iter()函数    8.12 列表解析    8.13 生成器表达式    8.14 相关模块    8.15 练习   第9章 文件和输入输出    9.1 文件对象    9.2 文件内建函数(open()和file())    9.3 文件内建方法    9.4 文件内建属性    9.5 标准文件    9.6 命令行参数    9.7 文件系统    9.8 文件执行    9.9 永久存储模块    9.10 相关模块    9.11 练习   第10章 错误和异常    10.1 什么是异常    10.2 Python 中的异常    10.3 检测和处理异常    10.4 上下文管理    10.5 *字符串作为异常    10.6 触发异常    10.7 断言    10.8 标准异常    10.9 *创建异常    10.10 (现在)为什么用异常    10.11 到底为什么要异常    10.12 异常和sys模块    10.13 相关模块    10.14 练习   第11章 函数和函数式编程    11.1 什么是函数?    11.2 调用函数    11.3 创建函数    11.4 传递函数    11.5 Formal Arguments    11.6 可变长度的参数    11.7 函数式编程    11.8 变量作用域    11.9 *递归     11.10 生成器    11.11 练习   第12章 模块    12.1 什么是模块    12.2 模块和文件    12.3 名称空间    12.4 导入模块    12.5 模块导入的特性    12.6 模块内建函数    12.7 包    12.8 模块的其他特性    12.9 相关模块    12.10 练习   第13章 面向对象编程    13.1 引言    13.2 面向对象编程    13.3 类    13.4 类属性    13.5 实例    13.6 实例属性    13.7 绑定和方法调用    13.8 静态方法和类方法    13.9 组合    13.10 子类和派生    13.11 继承    13.12 类、实例和其他对象的内建函数    13.13 用特殊方法定制类    13.14 私有化    13.15 *授权    13.16 新式类的高级特性(Python 2.2+)    13.17 相关模块和文档    13.18 练习   第14章 执行环境    14.1 可调用对象    14.2 代码对象    14.3 可执行的对象声明和内建函数    14.4 执行其他(Python)程序    14.5 执行其他(非Python)程序    14.6 受限执行    14.7 结束执行    14.8 各种操作系统接口    14.9 相关模块    14.10 练习  第2部分 高级主题  第15章 正则表达式    15.1 引言/动机    15.2 正则表达式使用的特殊符号和字符    15.3 正则表达式和Python语言    15.4 正则表达式示例    15.5 练习   第16章 网络编程    16.1 引言    16.2 套接字:通信端点    16.3 Python中的网络编程    16.4 *SocketServer模块    16.5 Twisted框架介绍    16.6 相关模块    16.7 练习   第17章 网络客户端编程    17.1 什么是因特网客户端    17.2 文件传输    17.3 网络新闻    17.4 电子邮件    17.5 相关模块    17.6 练习   第18章 多线程编程    18.1 引言/动机    18.2 线程和进程    18.3 Python、线程和全局解释器锁    18.4 thread模块    18.5 threading模块    18.6 相关模块    18.7 练习   第19章 图形用户界面编程    19.1 简介    19.2 Tkinter与Python编程 534   19.3 Tkinter举例    19.4 其他GUI简介    19.5 相关模块和其他GUI    19.6 练习   第20章 Web编程    20.1 介绍    20.2 使用Python进行Web应用:创建一个简单的Web客户端    20.3 高级Web客户端    20.4 CGI:帮助Web服务器处理客户端数据    20.5 建立CGI应用程序    20.6 在CGI中使用Unicode编码    20.7 高级CGI    20.8 Web(HTTP)服务器    20.9 相关模块    20.10 练习   第21章 数据库编程    21.1 介绍    21.2 Python数据库应用程序程序员接口(DB-API)    21.3 对象-关系管理器(ORM)    21.4 相关模块    21.5 练习   第22章 扩展Python 623   22.1 引言/动机    22.2 创建Python扩展    22.3 相关话题    22.4 练习  第23章 其他话题    23.1 Web服务    23.2 用Win32的COM来操作微软Office    23.3 用Jython写Python和Java的程序    23.4 练习    23.3 用Jython写Python和Java的程序    23.4 练习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值