python之路1(初识python)

python简史:

  python我认为特性就是简洁,灵活,高效。

  python重要版本:

  python1991年问世,

  python2.4:2004,同年django框架诞生。

  python2.6:2008年推出。

  python2.7:2010年推出。

  python3.0:与2.6并行推出,由于python推行多年底层垃圾积攒过多(好比网站运行多年,有大量的废弃函数,文件)使语  言逐渐的失去其简洁的特性。所以python作者对python进行优化,底层进行重大的改动。使其2.4之前的python程序无法迁  移到3.0上,推行不顺利。所以python官方推出2.6作为2x与3x中间版本,可以同时兼容两个版本。

   python3.5:2015年推出。

   python官方表示python2.7将会是最好的一个2x版本,之后不会更新2x。并建议python尽快升级到3x。时间2020年。

python:2x与3x区别

  (1)2.x print **

          3.x print(**)

     2.7两种都可以。

  (2)3.x某些模块进行改名 _改为. 大多数改成小写。

  (3)3.x不支持Twisted模块,正在支持。

  (4)3.x2/1=0.5

  (5)3.x raw_input改成input

  (6)3.x class Foo:改成class Foo()

python输出:

  print ("hello word")

  print (\n"hello word2") \n代表换行

linux下运行python声明解释器路径:

  1.#!/usr/bin/python3

  2.#!/usr/bin/env python (最安全写法,去整个环境变量中去找python,避免因为版本升级造成影响)

 

python变量与赋值:

 

  a = 5(变量可以方便随时进行调用)

示例:

  a=3

  b=a

  a=5

  print (b,a) 3 5

  在python中内存回收机制,b指向最初a的变量值时,指向的并不是a的路径,而是a变量在python内存中的位置(并不是实际  物理内存位置,而是python虚拟化的内存,python进行空间分配时,会产生一张表去记录变量位置,类似mfs主)类似于   linux的软硬链接。a重新赋值则会将之前的路径回收,产生新的路径。

 python变量名规则:

 1.有明显代表性。

  2.以_进行分割类似:wang_jian_hui = 20

  3.字母开头大写类似:WangJianHui=20

  4.数字,特殊符号,关键字符不能作为变量名称。

 

  id(name)查看python内存位置:id(a),id(b)

python用户交互:

  python2.x raw_input()

  puthon3.x input()

 python条件判断与缩进:

if...elif...else...

age=int(input(“please input your age:”))(int声明变量为整数)

a=18

if age==a:

  print(“good”)

elif age>a:

  print (“your inout age min”)

elif age<a:

  print (“your input age max”)

else

  print (“input error”)

注意python中强制缩进4个空格,如果不缩进则会报错。通过缩进来使代码可视化更高,用于区分作用域。

 python循环控制:

while true:无限循环,true false真假 true代表真,所以输入任何东西都会认为真,会去执行,所以是无限循环。

 1 luck_num=20
 2 num_count=0
 3 num=0
 4 while num_count<3:
 5     num=int(input("please your luck num:"))
 6     if num > luck_num:
 7         print("please input num max")
 8     elif num < luck_num:
 9         print("please input num min")
10     else:
11         print ("Bingo")
12         break
13     num_count +=1  (num_count = num_count+1)
14 else:
15     print("your input count max"16 思路:定义你的幸运数字,定义输入次数为0,每次执行一次循环加1,定义原始数。进行循环条件判断,如果次数小于3,则执行循环体中条件。如果不满足小于1说明超过次数则执行else条件(注意是while的else)。
17   如果满足while条件,则让用户输入变量,进行第二层判断,如果不满足if定义条件则执行if中else,执行完毕之后跳出循环break,每次执行+1次数。

 

 1 luck_num=20
 2 
 3 num=0
 4 for i in range(3): #range()定义循环次数
 5     num=int(input("please your luck num:"))
 6     if num > luck_num:
 7         print("please input num max")
 8     elif num < luck_num:
 9         print("please input num min")
10     else:
11         print ("Bingo")
12         break
13 else:
14     print("your input count max"

 

python数据类型:

int(整数型):32位支持-2**31~2**31-1 64位支持-2**63~2**63-1

long(长整数):当整数超过计算机所能支持的位数时python并不会强制规定位数,会将不支持的位数转换成L结尾。type()可以查询类型

float(浮点型):小数点

2.布尔值

true 或 flase 0或1

python字符串改进:

name = input("name:")
age = input("age:")
job = input("job:")
print("name:"+ name +"\nage:"+ age +"\njob:"+job) 万恶的字符串+
print("name:%s\nage:%s\njob:%s "%(name,age,job) ) 
'''
......
''' (注释:前后三个单引号为注释)

name=input("name:")
age=input("age:")
job=input("job:")
a=''' ##变量名称之后跟'''...'''为段落符
name:%s
  name:%s
  age:%s
  job:%s
'''%(name,name,age,job)
print (a)

%s代表字符
%d代表数字
%f代表浮点

python列表常用操作

 
 
a=input(“name:”).strip()
字符串后加.strip() 去除空白,前后空白

列表
name_list=["wang","20","it"]
print name_list[0] wang

help(对象name_list)查看该对象可以使用的操作

列表操作
append追加
count计算
extend扩展
index索引
insert插入
pop删除一个
remove删除指定一个
reverse反转
sort排序

name_list.append(“address”)列表末尾追加数据
name_list.index(“wang”)查看列表对象在该列表中的索引值
name_list.count(“wang”)查看该对象在该列表中的数量
name_list.insert(1,"wang2")在指定索引后面插入指定内容
name_list.pop删除列表中最后一个对象
name_list.remove(“wang”)从列表中删除该对象
name_list.reverse()该列表进行反转
name_list+a 扩展 两个列表相加 a加入name_list之后  name_list.extend(a)

for i in range(name_list.count(“wang”)):统计wang在该列表中的重名数量,赋值给for循环次数,然后for循环执行删除该对象。
  name_list.remove(”wang“)

python列表切片:
a=["1","2","A","3","4","5","6","7"]
a[0:1:3:4:5:6] 1234567
a[0:7:2]切片从0切到7之后隔2两个在进行切分
4 in (a) 4是否包涵在a列表中
if 4 in (a)
print (“aaa”)
 
 
 
 
python元组:
a=(“a”,“b”) 元组与列表区别就是元组是只读的,counnt index只支持 ttype(t)查看类型
list(a)把元组a,转换成列表
tuple(t)把列表转换成元组
 
 

 python二进制换算

+两对象相加
- 两个对象相减
* 相乘
/ 相除
% 取模,取余数
** 幂平方
// 整除,地板除
> 小于
< 大于
>= 小于等于
<= 大于等于
= 等于
+= 加等于
-= 减等于
*= 乘等于
/= 除等于
== 比较两数是否相等
!= 比较两数是否不相等
%= 取模等于
**= 幂等于
//= 整除等于

 python位运算

身份运算符:
a = ["1","2"]
is 判断两个对象是否引用于同一对象 type(a) is list
not is 判断是否取自不同对象 type (a) not is tuple

逻辑运算符
and 与 
or  或
not 非

if name == wang and age>=19:and满足第一个条件并且满足(and)第二个条件去执行
  print (“good”)
else
  print (“ass”)

if name == wang and name == hui: 满足第一个条件或(or)第二个条件就执行
  print (“good”)


成员运算符
in  查看该对象是否在列表中
not in 查看该对象不存在与该列表中
name = ["wang1","wang2"]
if wang3 not in name:
  print (“not exise”)


python简单的嵌套循环
continue跳过本次循环
for i in range(10):
  if i<5:
    continue
  print (i)

 python文件基本操作:

 1 file_obj=file(“文件路径”,“文件模式”)
 2 file_obj=open(“文件路径”,“文件模式”)
 3 r 只读
 4 w 只写
 5 a 追加
 6 w+ 写读
 7 
 8 obj.read()#一次性加载所有内容到内存
 9 obj.readlines()#一次性加载所有内容到内存,并根据行分割成字符串
10 for line in obj:#每次读取一行
11   print (line)
12 
13 obj.write(‘内容’)#写文件内容
14 
15 obj.close() #关闭文件句柄
16 
17 f=open("test.txt","w")
18 f.write("wang1\n")
19 f.write("wang2\n")
20 f.write("wang4\n")
21 f.write("wang5\n")
22 f.close()'''
23 '''
24 f=open("test.txt","r")
25 print (f.read())
26 f.close()'''
27 '''
28 f=open("test.txt","r")
29 print(f.readlines())
30 f.close()'''
31 
32 '''
33 f=open("test.txt","r")
34 print(f.readline())
35 for line in f:
36     if "4" in line:
37         print ("this is the third line")
38     else:
39         print (line)
40 f.close()'''
41 
42 f=open("test.txt","a")
43 f.write("wang6\n")
44 f.write("wang7\n")
45 f.close()
46 f=open("test.txt","r")
47 print(f.read())
48 f.close()

 作业:

 

 

 作业一:

 

 1 ming=["jack","wang","tom"] #定义用户名列表
 2 pswd=["123","321","567"] #定义密码列表,与用户名列表索引位置相对应,新添加用户名和密码已追加形式分别追加到两个列表末尾
 3 for i in range(3): #循环三次
 4     name = input("please your name:") #输入用户名。
 5     if name in (ming):#查看是否存在于用户列表中
 6         weizhi=ming.index(name)       #查看用户名在列表中的索引
 7         psd = input("please your psd:") #让用户输入密码
 8         if psd == pswd[weizhi] : #判断用户名和密码是否相等,通过用户名和密码存入的索引位置
 9             print ("login") #提示语
10             break  #跳出循环结束本次登陆
11         else:
12             print("password input error")  #如果当上方密码输入错误则进行提示并重新输入。
13     else:
14         print ("input username error")  #上方进行用户名是否存在用户文件中,如果不存在进行提示。
15 else:
16     print("input count max") #输入次数超过定义次数。
用户登陆

作业二:




 1 #定义字典
 2 memu = {
 3     "东北":{
 4         "吉林省":{
 5             "吉林市":['吉林市1','吉林市2'],
 6             "长春":['长春1','长春2'],},
 7         "辽宁省":{
 8             "沈阳":['沈阳1','沈阳2','沈阳3'],
 9             "大连":['大连1','大连2'],
10                 },
11             },
12     '华北':{
13         '河北省':{
14             '廊坊':['廊坊1','廊坊2'],
15             '保定':['保定1','保定2'],
16                 },
17         '内蒙古':{
18             '呼和浩特':['呼和浩特1','呼和浩特2','呼和浩特3'],
19             '包头':['包头1','包头2']
20                 },
21 
22         },
23     }
24 #定义循环值,true为真永久循环,false为假不循环。用于及时进行循环控制
25 flag = True
26 while flag: # 全局变量,设置跳出整个循环
27     for i,v in enumerate(memu.keys()): #遍历第一层字典
28         print (i,v) #打印出第一层key,value
29     add = input("Please select the target number /q quit /b return:")#提取用于键盘输入值
30     if add == 'q':#定义退出条件,当用户输入是q时结束程序
31         flag = False#定义循环条件,false为假,结束循环
32         break#跳出当前循环
33     ada = int(add)#定义用户输入值为整数。
34     #elif ype(add) is int:
35     count =int(len(memu))#查询字典key的数量
36     if int(count >= ada ):#用户进行比较,当输入的小于字典key时进行输出
37         for i1,v1 in enumerate(memu.keys()):#将输出内容赋值给两个变量,进行循环输出
38             if ada == i1 :#当用户输入的值等于字典中某个key时
39                 add1= v1#将key的value值赋予给一个变量
40         while flag:#定义循环,这里在定义循环是方便于用户可以返回上一层菜单,再次进行输入。
41             for i2,v2 in enumerate(memu[add1]):
42                 print(i2,v2)#打印出用户需要的信息
43 
44             add2 = input("Please select the target number /q quit /b return:")#提取用户键盘值
45             if add2 == 'q':#进行判断
46                 flag = False#将无限循环条件进行更改。
47                 break#跳出整个循环
48             if add2 == 'b':#进行判断是否为b
49                 break#break跳出本循环,需注意程序定义了多层无限循环,结束本次循环会返回上层继续循环以达到可以返回上层的目的
50             count1 = (len(memu[add1]))#定义用户需查找范围内key值得数量
51             ada1 = int(add2)#定义查找条件
52             if count1 >= ada1:#进行对比判断
53                 for i2,v2 in enumerate(memu[add1]):#将结果赋值给两个量
54                     if ada1 == i2:
55                         add2 = v2#进行条件匹配然后赋值
56                 while flag:#定义第三层无限循环
57                     for i3,v3 in enumerate(memu[add1][add2]):#将需要内容进行显示
58                         print(i3,v3)
59 
60                     add3 = input("Please select the target number :/q quit /b return:").strip()#提取用户输入值
61                     if add3 == 'q':#判断
62                         flag = flase
63                         break
64                     if add3 == 'b':
65                         break
66                     ada2 = int(add3)
67                     count2 = (len(memu[add1][add2]))#定义条件
68                     if count2 >= ada2:#判断
69                         for i3,v3 in enumerate(memu[add1][add2]):#赋值
70                             if ada2 == i3:
71                                 add3 = v3
72                         print(memu[add1][add2][add3])#进行三级菜单显示
73                         while flag:
74                             end = input("/q quit /b return:")
75                             if end == 'q':
76                                 flag = False
77                                 break
78                             elif end == 'b':
79                                 break
80                             else:
81                                 print ("input error")
82 
83 
84             #            for i4,v4,e4 in (memu[add1][add2][add3]):
85             #                print(i4,v4,e4)
86             #                flag = flase
87             #                break
88 '''
89             else:
90                 print("input error")
91 
92                         else:
93                             print("input error")
94         else:
95             print("input error")
96 '''
三级菜单

 



你可能感兴趣的:(python之路1(初识python))