@author:云都小生(Cloudking)
安装Python与第一个程序
首先你需要进入→ Python官网 挑好适合你们系统的版本(3.0),下载后安装。安装之后请在软件源目录中搜索这个东西——idle.bat,这个是Python提供的shell(类似Windows下的cmd),我们能通过这个东西来进行学习。
进入idle之后,在>>>后面,跟着小生一起操作。
输出与输入
我们之前在Python,实现了打印出”Hello,Wrold!”的效果,全靠 print() 这个函数。这个函数是Python提供的,作用是在控制台上输出相应的信息。你可以尝试着:
既然输出有了,那肯定得有输入吧,我们怎么把数据输入到Python中呢?很简单,利用 input() 看下面的操作!
>>> s = input() 100 >>> s ‘100’ >>> print(s) 100 >>>我们利用 input() 函数来接收输入,然后把数据放到一个变量s中去。最后,我们查看s里面有什么内容。
那么,变量是什么?
>>>name = input()
小生
>>>print("姓名:",name);
>>>姓名:小生
>>>
变量常量与数据类型
在程序中,我们用变量来存储那些程序运行中会改变的数据。
>>> score = 100
>>> name = "小生"
>>> number = 1
>>>
score、name、number都是变量,它们存储不同的数据。score存储的是成绩、name存储的是姓名、number存储的是座位号。变量名是由我们自己起的,但是一定要符合命名的规则。有什么规则呢?例如说你起一个变量叫123行不行,肯定不行,123是数据,根本就不能做变量名。还有一点,不能拿Python的关键字做变量名,例如说print,它明明是一个函数,然后你直接 print = 123 你说行不行?
变量名的头一定要是英文或者_ 变量名的命名一定要浅显易懂,一看就知道它有什么作用,用来存储什么。关于变量名的命名,我会在后面整理一篇文章来科普一下。 接下来我们来说说数据类型,不同的变量是用来存放不同的数据,上面的score存储的是分数,存储的是整型数据。而name是存储姓名,是字符串,这是两种不同的数据类型。其他很多编程语言,在使用变量之前,都需要先定义变量是什么数据类型,而Python是一门动态编程语言,不用那么麻烦。你在使用一个变量的时候,给它赋值什么样的数据,这个变量就会动态的设置成那种数据类型。
程序开发中还有另一种——常量,它不会根据程序运行而改变,一往而终。在Python中,常量一般用大写来表示,例如说定义一个π常量。
>>>PI = 3.141592654
>>>PI
3.141592654
有一点很重要的是,Python中定义的常量,并没有提供什么机制来保护常量的值不会被改变。 Python有些什么数据类型呢?
·整数型 可以存储整数 20
·浮点型 可以存储小数 1.66666
·字符串 可以存储字符串 “cloudkings”
·布尔值 可以存储True、False两种值(真假)
·控制 None(特殊的空值,不是0)
字符串中存在一个问题,需要扩展一下。在字符串中有一些特殊的转义字符,这些转义字符有各种其他的意义,例如’\n’表示回车换行,’\t’表示增加制表符。
>>> s = "cloudking\n"
>>> print(s)
cloudking
>>> >>> s = "cloud\tking"
>>> print(s)
cloud king
>>>
当碰到’\n’这个字符的时候,就会自动回车换行。更多转移字符可以看一下下面的转义字符表格。
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\’ | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数yy代表的字符,例如:\o12代表换行 |
\xyy | 十进制数yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
>>> s = "cloudking\'"
>>> print(s)
cloudking'
>>> s = r"cloudking\'"
>>> print(s)
cloudking\'
>>>
运算符与优先级
想要对数据进行处理,就需要掌握Python的运算符,Python提供了各式各样的运算符。
首先是算数运算符 + - * / // % **它们各表示加减乘除跟地板除、取余数和幂次方。
>>>a = 12
>>>b = 13
>>>c = a+b
>>>c
15
其他的算数运算符可以自己尝试一下,其中有一个细节,除法跟地板除是存在差距的。Python中的除法是真正的除法,会精确的计算出结果,而使用地板除结果会四舍五入。还有两个操作符,叫加加减减操作符,a++表示a递增1,a–表示a递减1。
然后是比较运算符 < > == <= >= != 运算结果是布尔值。
>>> 10 > 2
True
>>> 10 < 2
False
>>> 10 == 10
True
>>>10 != 2
True
在Python中,== 表示等于,而一个=表示赋值运算符,!=表示不等于。
然后是逻辑运算符 and or not 它们运算的结果是布尔值(要么真,要么假)
>>> 9 > 10
False
>>> 9 > 10 and 1 >0
False
>>> 10 > 9 and 10 > 5
True
>>> 9 > 10 or 9 > 5
True
>>> 1 > 10 or 9 < 2
False
>>> not(10 > 2)
False
>>> not(2 > 10)
True
>>>
进行and操作时,只有当两边的结果为真,最后结果才为真。真 && 真 = 真,其中一个运算为假,则整个结果为假。or操作时,只有当两个运算结果为真的时候,最终结果才为真,否则都是假。not操作是对整个运算结果取反,真就是假,假就是真。
按位运算符 & | ^ ~ << >> 这些运算符会对数值的二进制形式进行运。
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由”<<”右边的数指定移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
赋值运算符 = += -= /= %= *= **= //=
= | 将右侧操作数的值分配给左侧操作数 | c = a + b 表示将a + b 的值分配给c |
+= | 将右操作数相加到左操作数,并将结果分配给左操作数 | c + = a 等价于c = c + a |
-= | 从左操作数中减去右操作数,并将结果分配给左操作数 | c -= a 等价于 c = c - a |
*= | 将右操作数与左操作数相乘,并将结果分配给左操作数 | c *= a 等价于 c = c * a |
/= | 将左操作数除以右操作数,并将结果分配给左操作数 | c /= a 等价于 c = c / a |
%= | 将左操作数除以右操作数的模数,并将结果分配给左操作数 | c %= a 等价于 c = c % a |
**= | 执行指数(幂)计算,并将值分配给左操作数 | c **= a 等价于 c = c ** a |
//= | 运算符执行地板除运算,并将值分配给左操作数 | c //= a 等价于 c = c // a |
成员运算符 in,not in
这两个用来测试给定值是否为序列中的成员,例如字符串,列表或元组。
>>> a = 10
>>> b = 20
>>> List = [10,2,5]
>>> a in List
True
>>> b in List
False
>>> a not in List
False
>>> b not in fontList
True
>>>
身份运算符is,is not 用于比较两个对象的内存位置
>>> s1 = "cloudking"
>>> s2 = "cloudking"
>>> s1 is s2
True
字符串、对象在内存中是处于同一个位置,当你想知道,两个变量是否都指向同一个字符串或对象的时候,就可以用这个运算符。
还有一个优先级的问题,当不同的运算符放大一起的时候,是先进行哪种运算,你知道吗?我给你提供一个最简单的记忆方法:非 > 逻辑 > 关系 > 运算 既然我们了解了变量常量和数据类型,接下来,我们来看看格式化输出,先如下代码。
>>> s = "cloudker"
>>> a = "king"
>>> print("大家好,我是来自 %s 的 %s" % (s,a))
大家好,我是来自 cloudker 的 king
在字符串中,类似%s,其实算是一种占位符。通俗的话说,就是占这个位置给后面的变量常量,根据变量常量的改变,来动态的输出对应的字符串。
分支结构
想象一下,现在你想把自己写的程序锁起来,只有输入正确的密码才可以使用,要怎么解决?在没有学习分支结构之前,我们没有任何办法。Python与其他编程语言一样,提供了分支结构的语法 if -else if -else
>>> password = input()
8888
>>> if password != 8888:
print("密码错误")
密码错误
>>>
if语法: if 表达式: 表达式中是判断条件,如果表达式中结果为真,则执行if里面的代码,如果表达式中的结果为假,则不执行if里面的代码。接下我们看一下多重判断。
number = 80
if number > 100:
print("该数大于100")
else:
print("该数小于100")
该数小于100
这个else是否则的意思,整体的语法:如果xxx成立,就XXX,否则就XXXX。
还有一种情况,用到else if
number = 20
if number > 100:
print("该数大于100")
else if number >= 50:
print("该数大于或等于50")
else:
print("该数小于50")
当你觉得,你还有其他的条件增加,就可以用else if(再如果)。循环还可以被嵌套起来使用。
number = 20
if number >= 100:
if number > 105:
print("该数大于105")
else number > 102:
print("该数大于102")
else if number >= 50:
print("该数大于或等于50")
else:
print("该数小于50")
关于更多灵活使用,请自己
循环结构
如果我需要你从1加到100,你会不会写成 a = 1+2+3+4+···+100?如果我想要你把”Hello”打印一百次,你是不是要写十次的print(“Hello”)?由于有这些问题,所以我们需要学习接下来的一个重要的语法——循环结构 Python提供的循环结构的语法有两种,分别是while、for x in y
我们先来看一遍while的操作。
>>> a = 1
>>> while a < 100:
print("Hello")
a++
# while的语法
# while 表达式:
# 循环代码
这样就能打印100次”Hello”了,while的语法是这样的,首先判断循环的表达式,为真则执行循环代码,否则跳过。跟if很类似。
第二种语法是for x in y,我们也来了解一下。
>>> for i in range(101):
total += i
>>> total
5050
>>>
range()是Python提供的一个生成数列的函数,这里生成的是从0~100的数字,通过循环把它们累加起来。这个函数到下一章的高级数据类型大有用处。
注释与缩进
如果你想在程序中做一些笔记,提醒自己或者提醒那些阅读你代码的人,这里为什么要这么写,这些变量有什么用,这时候你就需要懂得注释的语法。在Python中做注释,可以直接用#。#后面的语句,不会被编译器编译,也不会被执行。
缩进是Python的灵魂,Python励志作一门非常简洁方便的编程语言,所以它在很多语法方面,省去了很多没有必要的东西。缩进能让我们更容易看懂程序的结构,如果缩进放错,就会产生错误。
2017/8/22 21:15:20 @author:Cloudking