那些年被我坑过的Python——邂逅与初识(第一章)
第一问:为什么学习Python?
虚妖说:为了还债,还技术债,很早接触编程,却一直徘徊,也码了很多代码,却从未真真学会编程!
第二问:什么是Python
是一种以简洁、优雅著称的解释型、动态、强类型的高级编程语言;
简洁和优雅:
体现在Python的语法风格,最明显的一点是缩进,其他语言中缩进本来是作为使代码结构条理增加可读性的约定,而在Python中缩进成了一种强制性要求,同时也成为代码块的分隔方式,避免使用过多的分隔标识,比如VB的Begin和End,shell中的if、fi,java中的{}等等;是不是有一种一箭双雕的感觉?!这类的编码风格已经成为Python的基因,也成就了简洁与优雅的特性。
解释型与编译型:
为了更好的理解两者的区别,我把编程语言与自然语言做一个类比:
使用语言来传递信息应该是人类作为智慧生物最大的特性之一。它是信息的在一定范围内的通用编码集合,实现了对信息的高级抽象。简而言之就是构成了沟通和交流的基础。但语言有适用范围限制,就像中国不同民族使用不同的语言,即使地理位置相近使用的语言相近也会有不同的表达方式,比如方言等,更不用说国外的其它多种语言了。在这个前提下就需要引入翻译机制来实现信息不同编码方式的转换。那么如果人要和机器交流怎么办?这就需要将自然语言翻译成机器语言,这里的翻译机制就称为编译(compile)。随着编译机制的发展,逐渐演化出两种编译方式:编译型和解释型。
编译型是指一次性把全部的自然语言进行翻译,一起告诉给计算机:你去整吧!现在没我啥事了。
解释型是指一段一段的进行翻译:你整完这块再找我,我时刻准备着为您服务!
动态与静态:
区别就是变量是否需要预先定义,需要预先定义的是静态类型,比如C和Java,需要用的时候再说,这类语言称为动态语言类型。
强类型与弱类型:
区别在于类型转换过程,强类型必须使用特定的转换函数,而弱类型则不用,强类型可以更好的对数据进行约束。
第三问:常用的字符编码有哪些?区别是什么?
常听说的字符编码有ASCII码、GB2312、GBK、GB28030、Unicode和UTF-8;
区别是:
ASCII编码的一个单元占用一个字节即8位,是较早的编码规范,不能表示中文或其他国家语言;
GB2312、GBK、GB28030是中国不同时期使用的字符编码集,一个单元占两个字节,用来实现对中文字符的编码;
Unicode是统一码或万国码,是各种编码的集大成者,一个单元占两个字节,可以对多国文字字符进行编码;
UTF-8是在Unicode基础上改良的可变长编码方式,即单元的长度是不定的,表示ASCII编码集中的字符时候单元为一个字节,表示其它复杂字符编码的时候,单元使用三个字节来表示,这样可以适应字符集的不断扩展,以后还可能加入外星字符集,呵~呵~
第四问:什么是变量,变量赋值?和内存地址或内存对象之间有什么关系?
变量顾名思义就是变化的量,是数据的抽象载体,而数据对象本身是存放在内存中的,给变量赋值就是构建变量名与数据对象地址之间的映射关系。变量不是数据,但是通过赋值操作,就可以通过变量名找到对应的数据对象。
而把一个变量赋值给另一个变量的本质是复制映射关系,变量名之间是没有关联的。
Python里的赋值还是很容易理解的,相较而言C、C++中的指针以及指针变量的概念就要复杂得多!
第五问:简单的数据类型有哪些?
几乎所有语言的基本数据类型都很相似,最简单的类型无非就是整型(int)、字符串(str)、布尔型(bool)和浮点型(float),当然Python的基本数据类型还包括:列表、字典、元组和集合。
第六问:Python中如何实现交互?
交互的实现是通过输入输出机制实现;
最简单的输入输出机制是通过input()与print()函数来实现的。
print()用来打印输出信息;input()用来实现用户数据的输入。
HelloWorld程序就是使用print()函数完成的:
output_info=input("Input something:")
>>>Hello World! print(output_info)
>>>Hello World!
第七问:主流的字符串的格式化输出方式有哪些?
字符串的格式化输出说白了就是向预先定义好的字符串模板中传入变量。而变量的传入有两种方式:
已有变量:
name = input("your name:")
age = input("your age:")
job = input("your job:")
salary = input("your salary:")
第一种是使用%作为占位符,然后按序按量依次传入:
output_info = '''
---------------%s's RESUME--------------------
-----name :%s
-----age :%s
-----job :%s
-----salary:%s
''' % (name,
name,
age,
job,
salary)
如上:在字符串中使用%s、%d、%f(分表示字符串、整型和浮点型变量)表示将要传入的数据的位置,在字符串结束后通过“ % (变量名1,变量名2,...)”实现变量的导入。当然导入的变量个数与顺序要与字符串中占位符一 一对应!
第二种是使用字符串的内置函数format()来实现:
output_info = '''
---------------{0}'s RESUME--------------------
-----name :{0}
-----age :{1}
-----job :{2}
-----salary:{3}
'''.format(name,
age,
job,
salary) output_info = '''
---------------{_name}'s RESUME--------------------
-----name :{_name}
-----age :{_age}
-----job :{_job}
-----salary:{_salary}
'''.format(_name=name,
_age=age,
_job=job,
_salary=salary)
这里其实就是调用了字符串类中的format()方法将变量传入,常用的有通过索引位置传入和通过label插入,不再过多赘述!
第八问:如何实现选择分支与循环?
选择分支是通过if语句来实现的,循环通过while语句与for语句实现,细节不再赘述,用两小段代码来说明:
import random
# 生成100以内的随机数来猜
true_age = random.randrange(100)
# print(true_age)
count = 5 while count > 0:
print("You only have %d chances to guess!" % count)
guess_age = int(input("guess a number between 1 and 100:"))
count -= 1 if guess_age == true_age:
print("Bingo!")
break
elif guess_age > true_age:
print("Just smaller try again!")
continue
else guess_age < true_age:
print("Just bigger try again!")
continue
else:
print("Unluckly!")
上面代码的功能是实现猜年龄,年龄是随机生成的100以内随机整数,而且只有5次机会,每次输入一个猜测值,根据与真实值的比较结果反馈,如果五次都没有猜对就退出循环,猜对则立刻退出循环。
import random true_age = random.randrange(100)
times = 3 for count in range(10):
guess_age = int(input("guess a number between 1 and 100:"))
# 超过三次后提示是否继续
if count >= times - 1:
response = input("Do you want to continue?")
if response != 'y':
print("Unlucky!")
break if guess_age == true_age:
print("Bingo!")
break
elif guess_age > true_age:
print("Just smaller try again!")
else guess_age < true_age:
print("Just bigger try again!")
else:
print("Unlucky!")
与上一段代码相比,这里使用了for语句实现循环,超过三次猜不对,就会提醒用户是否继续;
range()的功能很强大,可以设置步长也可以倒序,比如:
for i in range(100,0,-1):
pass for i in range(0,10,2):
pass
第一个for语句可实现i从100到0的变化,第二个语句可以实现10以内的偶数输出,顾名思义!
第九问:编程的好习惯有哪些?
首先,写博客就是一个很好的回顾和梳理知识的手段;
其次,设计的重要性远远高于编码过程,因此为了更好地将头脑中的概念具现化就需要使用工具来辅助我们,使用流程图来固化设计方案可以使得编码更有条理与针对性,对设计过程中存在的重大问题也有很好的反馈作用!
最后,书读百遍其义自见,想磨练编程技能,写代码做练习是无可厚非的,孰能生巧,很有道理!
第一次编写博客,内容和排版可能都有欠缺,望大家多多体谅,如果发现文中有错误或是歧义,请多多指教,都是凡人,难得不犯错!
那些年被我坑过的Python——邂逅与初识(第一章)的更多相关文章
- 那些年被我坑过的Python——不得不知(第二章)
问题一: Python3.5.X中的数据类型有哪些? 答:包括整型.布尔型.字符串型.浮点型.复数.列表.字典.集合.元组. 细化来说: 1.整型包括短整型和长整型,不过我们不必过度操心细节,因为短整 ...
- 那些年被我坑过的Python——摩拳擦掌(第三章)
集合类型: 集合类型中的元素是唯一的! 集合的定义与赋值: set_1 = set([1, 3, 5, 7, 2]) set_2 = set([2, 4, 6, 8, 3]) 集合的运算操作 # 交集 ...
- Python核心编程2第一章课后练习
1-1 在windows下的安装方法在网上下载python2.7直接安装到C盘1)在系统变量中找到path. 2)编辑path值,添加你安装的python路径,C:\Python27. 3)检验pyt ...
- python cookbook学习笔记 第一章 文本(1)
1.1每次处理一个字符(即每次处理一个字符的方式处理字符串) print list('theString') #方法一,转列表 结果:['t', 'h', 'e', 'S', 't', 'r', 'i ...
- 流畅的python学习笔记:第一章
这一章中作者简要的介绍了python数据模型,主要是python的一些特殊方法.比如__len__, __getitem__. 并用一个纸牌的程序来讲解了这些方法 首先介绍下Tuple和nametup ...
- Python之旅_第一章Python入门
一.编程语言分类 1.机器语言:即计算机能听懂的二进制语言,0000 0001,直接操控硬件: 2.汇编语言:简写的英文标识符代替二进制语言,本质同样是直接操控硬件: 3.高级语言:用更贴近人类的语言 ...
- 【Python自然语言处理】第一章学习笔记——搜索文本、计数统计和字符串链表
这本书主要是基于Python和一个自然语言工具包(Natural Language Toolkit, NLTK)的开源库进行讲解 NLTK 介绍:NLTK是一个构建Python程序以处理人类语言数据的 ...
- Python基础教程笔记 第一章
/ 表示整除,当导入_future_模块中的version时,/ 表示正常的的除法, 此时可用//表示整除,不论数字是整型还是浮点型,都可以用//表示整除. ** 表示幂次方 例如 2**3 ...
- python 机器学习基础教程——第一章,引言
https://www.cnblogs.com/HolyShine/p/10819831.html # from sklearn.datasets import load_iris import nu ...
随机推荐
- CSS3之设计动态立体盒子
CSS3设计3D效果图 使用到CSS3中的变形.缩放.倾斜. 只写了兼容Gecto的.发张图片鼓励自己 <!DOCTYPE html> <html> <head> ...
- 使用Java程序发送Email
目前很多大型的网站忘记登录密码常见的一种形式是使用邮箱找回密码 最近做项目也有这个需求 现在总结一下 以便以后查看 使用到的包有 mailapi.jar smtp.jar 封装发送邮 ...
- 读书笔记-HBase in Action-第二部分Advanced concepts-(1)HBase table design
本章以山寨版Twitter为例介绍HBase Schema设计模式.广义的HBase Schema设计不仅仅包含创建表时指定项,还应该综合考虑Column families/Column qualif ...
- HTML5另类塔防游戏 -《三国战线》公布
关于本作 游戏介绍 本游戏是一款另类塔防游戏.本作以三国这段历史为题材,提供了从颍川之战到官渡之战.官渡之战到夷陵之战.夷陵之战到五丈原之战等15个关卡.在每一个关卡中,你会控制一名三国武将与出现的敌 ...
- sift算法c语言实现
前段时间在做三维測量方面的研究.须要得到物体表面三维数据.sift算法是立体匹配中的经典算法.以下是对RobHess的SIFT源码的凝视.部分内容參考网上,在这里向各位大神表示感谢. http://b ...
- pcap 安装(debian7 linux) qt 使用pcap.h
安装方法一.sudo apt-get install libpcap-dev 安装方法二. 去http://www.tcpdump.org/下载最新的libpcap.tar.gz包 解压以后 ./co ...
- vim阅读c++代码的快捷键
未完,待总结 1. 首先适用ctags建立当前工作目录的标签: cd /home/wanglc/WorkDirectory ctags -R or ctags -R * 命令结束以后,会生成一个tag ...
- 看懂下面C++代码才说你理解了C++多态虚函数!
#include <iostream> using namespace std ; class Father { private : virtual void Say() //只有添加 ...
- "ORA-00942: 表或视图不存在 "的原因和解决方法
"ORA-00942: 表或视图不存在 "的原因和解决方法 采用Oracle数据库,使用Powerdesigner设计,生成Sql文件导入后查询出现“ORA-00942: 表或 ...
- Kali Linux 2.0: 安装之后的操作
1. 添加官方软件库 1) 编辑/etc/apt/sources.list leafpad /etc/apt/sources.list 2) 用#注释掉原有的内容,并添加下述内容: # Regular ...