执行python方式
交互器
缺点 程序不能永久保存,主要用于简单的语法测试
文件执行
IDE
integrated development environment
VIM 经典的linux下的文本编辑器
emacs linux 文本编辑器,比VIM更容易使用
eclipse java ide,支持 python,c ,c++
visual studio 微软开发的ide,python,c++,java,c#
notepad++
sublime python开发的
pycharm 是主要用于python开发的ide
变量
标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’)
标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字(0-9)组成。
有效 标识符名称的例子有i、__my_name、name_23和a1b2_c3。
无效 标识符名称的例子有2things、this is spaced out和my-name。
标识符名称是对大小写敏感的。例如,myname和myName不是一个标识符。注意前者中的小写n和后者中的大写N。
常量:数值不变的
变量:数值会变动的量
name = "Alex li" name2 = name #name2和name没关系,指向内存中的Alex li print("My name is",name) print("My name is",name,name2) name = "paoche ge" print(name,name2) name Alex li name2 paoche ge
在python中没有常量的,所有的数值都可以改变,但是他依然有个常量的概念,但是是人为的你不去改变他,定义一个常量应该用大写的形式。
AGE = 10 这个就是常量,他是大写的!是约定俗成的。但是他是可以改的!
name = 'Tim Luo' 这个是变量
##这里需要注意下,设置变量的时候不能设置python自带的内置方法比如type
以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield' ]
变量名一定是带有描述性的
变量名是区分大小写的
字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),所以如果不指定编码类型,如果有中文就会报错。
#! /usr/bin/env python 声明从环境变量内找寻python # -*- coding:utf-8 -*- 声明字符编码使用utf-8
注释
单行注释 #
多行注释""" """
打印多行
msg =""" name2=name print("My name is",name,name2) name="paoche ge" """ print(msg)
用户输入
name = input("name:") print (name)
由于input所接受的所有数据都是字符串,即便你输入的是数字,但依然会被当成字符串来处理
death_age = 80 name = input ("your name:") age = input("your age:") print(type(age)) #打印age的数据类型 #int = integer 整数 把字符串转成int #str = string 字符串 把数据转成字符串用str print ("your name:",name) #print("you can still live for",death_age - int(age),"years...") print ("you can still live for"+str(death_age - int(age))+"years...") #字符串拼接
格式化输出
格式化输出的几种方式:
1.字符串拼接
name = input ("name:") age = input ("age:") work = input ("work:") salary = input ("salary:") info = """ -----------info of """+ name + """----------- name:""" + name + """ age: """ + age + """ work: """ + work + """ salary: """ + salary + """ """ print (info) #字符串拼接,在定义变量时,比其他方法要在内存中多去划分一部分容量,一般不建议使用
2.使用%占位符
占位符
%s s=string 字符串
%d d=digit 整数
%f f=float 浮点,约等于小数 默认会加上小数点后六位数的精度
name = input ("name:") age = input ("age:") work = input ("work:") salary = input ("salary:") info = """ -----------info of %s ----------- #### s代表string 字符串 name:%s age: %s work: %s salary: %s """ % (name,name,age,work,salary) print (info)if salary.isdigit(): #由于salary需要用数字表示,如果强制把input赋值的结果转成int,当输入数字以外的就会报错。这里添加判断,salary是否长得像数字,digit是数字的意思 salary=int(salary) #当用户输入数字,就把salary的数据类型转换成int,当输入的不是数字,提示用户输入数字。else: print("must input digit") #等同于 exit("must input digit") 输入错误退出程序 exit()
name = input ("name:") age = input ("age:") work = input ("work:") salary = int(input ("salary:")) info = """ -----------info of %s ----------- #### s代表string 字符串 name:%s age: %s work: %s salary: %d #必须输入数字 """ % (name,name,age,work,salary) print (info)
name = input ("name:") age = input ("age:") work = input ("work:") salary = int(input ("salary:")) info = """ -----------info of %s ----------- name:%s age: %s work: %s salary: %f """ % (name,name,age,work,salary) print (info) #输出 name:air age:22 work:it salary:3000 -----------info of air ----------- name:air age: 22 work: it salary: 3000.000000
3.使用%占位符,并且强制转换数据类型
name = input ("name:") #python 2.x raw_input("name:") #intput 2.x int age = int(input ("age:")) #int=integer 整型 print (type(age) ) #打印一个变量的数据类型 work = input ("work:") salary = input ("salary:") info = ''' -----------info of %s ----------- # s代表string 字符串 name:%s age: %d #d代表数字,强制使用数字,让程序检测数据类型 work: %s salary: %s ''' %(name,name,age,work,salary) print (info)
4.替换
name = input ("name:") age = input ("age:") work = input ("work:" ) salary = input ("salary:") info =""" ---------info of {_name}----------- name:{_name} age:{_age} work:{_work} salary:{_salary} """.format(_name=name,_age=age,_work=work,_salary=salary) print(info)
5.替换
name = input ("name:") age = input ("age:") work = input ("work:" ) salary = input ("salary:") info =""" ---------info of {0}----------- name:{0} age:{1} work:{2} salary:{3} """.format(name,age,work,salary) print(info)
流程控制
if elif else
输入用户名密码
_username = "lw" _password = "123" username = input("username:") password = input("password:") if _username == username and _password == password: #流程控制 逻辑判断 print ("welcom user {name} login... ".format(name=username)) else: print ("invalid username or password")
猜数字
age_of_oldboy = 22 gusess_age = int(input("gusess age:")) #input 默认数据类型为字符串 if gusess_age == age_of_oldboy: print("your right!") elif gusess_age > age_of_oldboy: print("thinger smaller") else: print("thinker bigger")
while
while true
从0开始每循环一次加一,加到1000时停止
count = 0 while True: print("count:",count) count = count + 1 if count == 1000: break #break 跳出本次循环
#错误示例 count = "0" #不是相加,而是0111111111不断加1,字符串类型无法做函数运算 while True: print("count:",count) count = count + "1"
猜年龄
age_of_oldboy = 22 #22不加""为变量,加上为字符串 count = 0 #添加计数器 while True: if count == 3: break gusess_age = int(input("gusess age:")) if gusess_age == age_of_oldboy: print("your right!") break elif gusess_age > age_of_oldboy: print("thinger smaller") else: print("thinker bigger") count += 1 #循环记数
while + 判断条件
age_of_oldboy = 22 #22不加""为变量,加上为字符串 count = 0 #添加计数器 while count < 3: gusess_age = int(input("gusess age:")) if gusess_age == age_of_oldboy: print("your right!") break elif gusess_age > age_of_oldboy: print("thinger smaller") else: print("thinker bigger") count += 1 #循环记数 if count == 3: print("you have tried too many times...fuck off")
上面示例另一种表达
age_of_oldboy = 22 #22不加""为变量,加上为字符串 count = 0 #添加计数器 while count <3: gusess_age = int(input("gusess age:")) if gusess_age == age_of_oldboy: print("your right!") break elif gusess_age > age_of_oldboy: print("thinger smaller") else: print("thinker bigger") count += 1 #循环记数 else: print("you have tried too many times...fuck off")
添加条件,在完成3次又没猜对后,对用户询问提示,用户若输入n,重新开始循环
age_of_oldboy = 22 #22不加""为变量,加上为字符串 count = 0 #添加计数器 while count <3: gusess_age = int(input("gusess age:")) if gusess_age == age_of_oldboy: print("your right!") break elif gusess_age > age_of_oldboy: print("thinger smaller") else: print("thinker bigger") count += 1 #循环记数 if count == 3: countine_confirm = input("do you want to keep guessing...?") if countine_confirm !="n": count = 0
错误示例
#错误语句 lucky_num = 19 input_num = -1 guess_count = 0 while lucky_num != input_num and guess_count <3: print("guess count:",guess_count) input_num = int(input("input the guess num:")) if input_num > lucky_num: print("too bigger") elif input_num < lucky_num: print("too smaller") else: print("bingo!") guess_count+=1 else: print("trying too many times..") #当循环执行到这一步,只要没有满足lucky_num != input_num and guess_count <3: #else语句都会被执行,所以在while 完成3次循环时,都会在后面加上trying too many times..
标示位
age = 50 user_input_age = 0 flag = True while flag: user_input_age = int(input("age is")) if user_input_age == age: print("yes") flag = False elif user_input_age > age: print("bigger") else: print ("smaller") print("end")
while
else
else表示当while循环语句正常结束了之后就执行else之后的语句
num=1 while num<=10: num += 1 if num ==3: coninue print(num) #由于缩进原则,print不受if语句影响 else: print("This is else statement") #输出 2 4 5 6 7 8 9 10 11 This is else statement 若将coninue换成break num=1 while num<=10: num += 1 if num ==5: break print(num) else: print("This is else statement") #输出 2 3 4 #由于break会结束while循环,所以else后面的语句并未执行
循环嵌套
示例:
print("#",end="") print("#",end="") print("#",end="") print("#",end="") 使用循环表示 num = 4 while num > 0: print("#",end="") num -= 1输出4行4列num2 = 4while num2 > 0: num = 4 while num > 0: print("#",end="") num -= 1 print() num2 -= 1
问题示例: num1 = 0 num2 = 0 while num1<=5: print(num1,end="_") while num2<=7: print(num2,end="-") num2 += 1 num1 += 1 print() #换行,等价于print(end"\n") #输出 0_0-1-2-3-4-5-6-7- 1_ 2_ 3_ 4_ 5_ #由于第二个while循环,当num2递加到8时,在进行下一次第一个while循环时,因为他不<=7所以就不会去执行第二个while循环语句了。 正确示例: 改进 num1 = 0 num2 = 0 while num1<=5: num2 = 0 print(num1,end="_") while num2<=7: print(num2,end="-") num2 += 1 num1 += 1 print() #输出 0_0-1-2-3-4-5-6-7- 1_0-1-2-3-4-5-6-7- 2_0-1-2-3-4-5-6-7- 3_0-1-2-3-4-5-6-7- 4_0-1-2-3-4-5-6-7- 5_0-1-2-3-4-5-6-7-
循环嵌套练习:
1.使用#好输出一个长方形,用户可以指定宽和高,如果长为3,高为4,则输出一个横着有3个#号,竖着有4个#号的长方形。
第一种方式:height = int(input("height:")) width = int(input("width:")) num_height = 1 while num_height <= height: num_width = 1 while num_width <= width: print("#",end="") num_width += 1 print() num_height += 1 #输出: height:5 width:5 ##### ##### ##### ##### #####第二种方式:#高度height就等于多少行
height = int(input("height:"))width = int(input("width:"))w = width while height > 0: w = width #由于每次完成内部的while循环后,width的值都会变为0,需要在给他重新赋值 while w > 0: print("#",end="") w -= 1 print() height -= 1#输出
#####
#####
#####
#####
#####
2.如何输出一个如下的直角三角形,用户指定输出行数;(如果上下反转,又如何实现?)
*
**
***
****
3.输出九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
.................................
b=1 while b<=9: #最外层的while语句控制列即换行 a = 1 while a<=b: #内层的while语句控制每行的输出,因为输出的最终结果行等于列,所以在打印每行的时候,添加判断a<=b print(a,"*",b,"=",a*b,end="\t") #end="\t" \t代表制表符,使输出格式对其 a += 1 print() b += 1 #a代表了有多少列,b代表了有多少行行,在执行一个全部循环,b的值才会加1,用b>=a,控制a在每行的输出多少列 #最终输出结果 1 * 1 = 1 1 * 2 = 2 2 * 2 = 4 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
b=9 while b>0: a = 1 t = b while t>0: print(a,"*",b,"=",a*b,end="\t") a+=1 t-=1 print() b -= 1#输出 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 2 = 2 2 * 2 = 4 1 * 1 = 1
b=9while b>0: a = 1 while b>=a: print(a,"*",b,"=",a*b,end="\t") a+=1 print() b -= 1
#输出 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 2 = 2 2 * 2 = 4 1 * 1 = 1
for
#b是临时变量,range(10)相当于0,1,2,3,4,5,6,7,8,9 #for b in就是每循环一次,从range(10)里依次取值给B for b in range(10): print("loop",b) #输出结果 #loop 0 #loop 1 #loop 2 #loop 3 #loop 4 #loop 5 #loop 6 #loop 7 #loop 8 #loop 9 #loop 10
for b in range(0,10,2): #从0-10中取值,2代表间距 print("loop",b) #输出 #loop 0 #loop 2 #loop 4 #loop 6 #loop 8 #loop 10
猜年龄
age_of_oldboy = 22 #22不加""为变量,加上为字符串 #添加计数器 for i in range(3): gusess_age = int(input("gusess age:")) if gusess_age == age_of_oldboy: print("your right!") break elif gusess_age > age_of_oldboy: print("thinger smaller") else: print("thinker bigger") else: print("you have tried too many times...fuck off")
continue 重新执行本次循环
只执行continue之前的语句,之后的语句都不执行
for j in range(5): for i in range(10): if i <5: continue if j>3: break print(i)
print输出换行的问题
print("111",end="") #end="",双引号内的表示输出的行末,默认为\n换行符 print("111",end="") print("111",end="") #输出 111111111
对于python2.X,要消除print的自动换行,只需在print尾部加上一个逗号”,”,但是这一做法在python3.X就不适用了,这是为什么呢?我们可以在交互式的环境下输入help(print),查询print的原理和使用方法。
Help on built-in function print in module builtins:
print(…)
print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
appledeMacBook-Pro-2:Desktop apple$ python3 Python 3.5.0 (v3.5.0:374f501f4567, Sep 12 2015, 11:00:19) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> help(print) Help on built-in function print in module builtins: print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream. (END)
注意看这一句:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
这一句说明在python3中print是一个函数,对于函数,其形参中有默认参数和关键参数。我们发现,在结尾处出现了end = ‘\n’,说明print是以\n结束的,end是默认参数。只要我们在print中将默认参数的值改为空或者空格,就能实现不换行
缩进
缩进级别必须保持一致
if gusess_age == age_of_oldboy: print("your right!") #print前用tab键缩进 print("your right!") #print前用4个空格缩进 #报错 因为TAB和空格在liunx里会呈现出不同的结果。 #官方建议使用4个空格用于缩进
算数运算符
操作符 | 描述符 | 例子 |
+ | 加法,对操作符的两侧增加值 | a+b=30 |
- | 减法,减去从左侧操作数到右侧操作数 | a-b=-10 |
* | 乘法,相乘的运算两侧的值 | a*b=200 |
/ | 除,由右侧操作数除以左侧操作数 | a/b=2 |
% | 余数,由右侧操作数除以左侧操作数,无法除尽所得的数 | a%b=0 |
** | 指数,执行对操作指数(幂)的计算 | a**b=10幂20 |
// | 地板除(整除),操作数的除法,其中结果是将小数点后的位数被忽略的商 | 9//2=4 |
运算的优先级
使用()而在数学运算中使用{[()]}来分层区分优先级。
#在CMD命令行下输入a=3 b=5 a>b #输出 #False
比较操作符
运算符 | 描述 | 示例 |
== | 检查两个操作数的值是否相等,如果是则条件变为真。 | (a==b)为true |
!= | 检查连个操作数的值是否相等,如果值不相等,则条件变为真。 |
(a!=b)为true |
<> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | (a<>b)为true,这个类似于!=运算符 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | (a > b) 为 true. |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | (a < b) 为 true. |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | (a >= b) 为 true. |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | (a <= b) 为 true. |
#在CMD命令行下输入 a=3 b=5 b>=a #输出 #True
取三个数中的最大值
num1 = input("num1:") num2 = input("num2:") num3 = input("num3:") if num1>num2: if num1>num3: print("num1",num1) else: print("num3",num3) else: if num2>num3: print("num2",num2) else: print("num3",num3)
赋值运算符
运算符 | 描述 | 示例 |
= | 简单的赋值运算符,赋值从右侧操作数给左侧操作数 | c = a + b将指定的值 a + b 到 c |
+= | 加法AND赋值操作符,它增加了右操作数左操作数和结果赋给左操作数 | c += a 相当于 c = c + a |
-= | 减AND赋值操作符,它减去右边的操作数从左边操作数,并将结果赋给左操作数 | c -= a 相当于 c = c - a |
*= | 乘法AND赋值操作符,它乘以右边的操作数与左操作数,并将结果赋给左操作数 | c *= a 相当于 c = c * a |
/= | 除法AND赋值操作符,它把左操作数与正确的操作数,并将结果赋给左操作数 | c /= a 相当于= c / a |
%= | 量AND赋值操作符,它需要使用两个操作数的模量和分配结果左操作数 | c %= a is equivalent to c = c % a |
**= | 指数AND赋值运算符,执行指数(功率)计算操作符和赋值给左操作数 | c **= a 相当于 c = c ** a |
//= | 地板除,并分配一个值,执行地板除对操作和赋值给左操作数 | c //= a 相当于 c = c // a |
>>>num=1 >>>num 1 >>>num=2 >>>num+=1 >>>num 3 >>>num=3 >>>num-=1 >>>num 2 >>>num=2 >>>num*=2 >>>num 4 >>>num=6 >>>num/=2 >>>num 3 >>>num=7 >>>num%=3 >>>num 1 >>>num=3 >>>num**=3 >>>num 27 >>>num=9 >>>num//=2 >>>num 4
逻辑运算符
运算符 | 描述 | 示例 |
and | 所谓逻辑与运算符。如果两个操作数都是真的,那么则条件成立。并且的意思 | (a and b)为true |
or | 所谓逻辑or运算符。如果有两个操作数都是非零然后再条件变为真。或的意思 | (a or b) 为 true. |
not | 所谓逻辑非运算符。用于反转操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将返回false。 | not(a and b) 为 false. |
例子: and运算,都为真时为真 >>> 9 > 8 and 9 < 10 True >>> 9 > 8 and 9 > 10 False or运算,有一个为真的时候即可为真 >>> 9 > 8 or 9 > 10 True >>> 9 < 8 or 9 > 10 False >>> not运算,假为真真为假 >>> not 6.2 <= 6 True >>> not 6.2 >= 6 False >>>
>>>5<3 and 4<3 or 6>5 #按照从左至右的顺序 True >>>5>3 or (4>3 and 6<5)#添加括号来改变执行运算的优先级 True
短路原则
对于and
如果前面的第一个条件为假,那么这个and前后两个条件组成的表达式的计算结果就一定为假,第二个条件就不会被计算
对于or
如果前面的第一个条件为真,那么这个or前后两个条件组成的表达式的计算结果就一定为真,第二个条件就不会被计算
>>>not not True or False and not True #or右边的条件不予判断 True >>>True or True and False #or右边的条件不予判断 True
来源:https://www.cnblogs.com/air3162/p/7584430.html