Python攻克之路-基础介绍篇

1.IDE介绍及设置:集成开发环境(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
设置修改默认作者和日期:settings --> Editor --> File and Code Templates --> Python Script --> 使用变量${USER} ,${DATE}
使用技巧:给程序打断点,在程序左边显示行号的地方点击,然后右击debug运行

 

2.引号:在Python中,单引号与双引号是没有区别的,只是在一些特别场景中一起使用以示区别,如print "hello,it's raining"
三引号:可以注释,还可以打印多行

[root@zabbix py]# cat print_more_lines.py 
#!/usr/local/python3/bin/python3
msg = ''' you are great
you
you'''
print(msg)
[root@zabbix py]# python3 print_more_lines.py 
 you are great
you
you

  

3.字符格式化输出
占位符 %s s = string
%d d = digit 整数
%f f = float 浮点数,约等于小数

[root@zabbix day1]# cat printif.py 
#!/usr/local/python3/bin/python3
name = input("Name: ")
age = int(input("Age: ")) 
job = input("Job: ")
salary = input("Salary: ")
if salary.isdigit:               #判断是否数据,是就转换成整数
    salary = int(salary)
else:
    print('input the real digit')
msg = '''
    Name = %s
    Age = %s
    Job = %s
    Salary = %f          #可以定义是以什么格式输出
    You will retire after %s years
'''%(name,age,job,salary,66-age)

print(msg)

  

4.数据类型-数值、布尔值、字符串简介
数据运算
  数据类型出初识
    数字
      整数 int(integer)
        整型:数据有限
        长整型:数据大
        in py3 已经不区分整型与长整型,统一都叫整型
        in C int age 22 , long age
    布尔 只有2种状态,分别是
        真 True
        假 False

a = 9
b = 7
a < b
False
a > b
True

  

(1).字符串
salary.isdigit()
计算机中, 一切皆为对象
世界万物,皆为对象,一切对象皆可分类
字符串之间是可以用加号拼接的,但是相当于多开内存

>>> name = "reid"
>>> age = "22"
>>> print ("my name is" + name + age)
my name isreid22

循环loop
有限循环 ,次数限制
无限循环=死循环
  continue 结束本次循环,继续下一次循环
  break 跳出整个当前的循环
循环取奇数:

[root@zabbix day1]# cat loop.py 
#!/usr/local/python3/bin/python3
for i in range(1,101):     ##range可以产生序列
    if i % 2 == 1:         ##整除2得1的奇数,得0是偶数
        print("loop: ",i)
[root@zabbix day1]# python3 loop.py 
loop:  1
loop:  3
loop:  5
loop:  7

[root@zabbix day1]# cat loop.py 
#!/usr/local/python3/bin/python3
for i in range(1,101,2):   ##直接使用range的步长
    print("loop: ",i)

 

应用例子:登陆程序简单版

[root@zabbix day1]# cat login.py 
#!/usr/local/python3/bin/python3
_user = "reid"
_passwd = "123"

for i in range(3):
    username = input("username: ")
    password = input("password: ")
    if username == _user and password == _passwd:
        print("welcome")
        break
    else:
        print("wrong")

标志位的使用

[root@zabbix day1]# cat login.py 
#!/usr/local/python3/bin/python3
_user = "reid"
_passwd = "123"

passed_authentication = False   ##标志位,默认为False

for i in range(3):
    username = input("username: ")
    password = input("password: ")
    if username == _user and password == _passwd:
        print("welcome")
        passed_authentication = True   ##登陆成功后,标志为True
        break
    else:
        print("wrong")

if not passed_authentication:         ##如果False,则操作
    print('you lost serveral times')

使用for循环与else结合,实现标志位的效果

[root@zabbix day1]# cat login.py 
#!/usr/local/python3/bin/python3
_user = "reid"
_passwd = "123"

for i in range(3):
    username = input("username: ")
    password = input("password: ")
    if username == _user and password == _passwd:
        print("welcome")   ##
        break  #中断后,不会执行最后的else语句
    else:
        print("wrong")

else:  #如果for循环正常执行,中间没有被中断过,else就会正常执行
    print('you lost serveral times

使用while循环替换for循环

[root@zabbix day1]# cat login_while.py 
#!/usr/local/python3/bin/python3
_user = "reid"
_passwd = "123"

couter = 0          #设置计数器
while couter < 3:   #当couter <3的条件成立,就表示为True,才会执行如下代码
    username = input("username: ")
    password = input("password: ")
    if username == _user and password == _passwd:
        print("welcome")
        break
    else:
        print("wrong")
    couter += 1    ##计数,默认为0,执行一次+1,当到3时代码就执行下来的else

else:
    print('you lost serveral times')

增加需求:更改三次后还是继续使用

[root@zabbix day1]# cat login_while.py 
#!/usr/local/python3/bin/python3
_user = "reid"
_passwd = "123"

counter = 0
while counter < 3:
    username = input("username: ")
    password = input("password: ")
    if username == _user and password == _passwd:
        print("welcome")
        break
    else:
        print("wrong")
    counter += 1
    if counter == 3:    ##先判断已经是三次
        keep_trying = input("try again: [y/n]")
        if keep_trying == 'y':   ##如果选y后,让计数器重新为0
             counter = 0

else:
    print('you lost serveral times')

使用continue与标志位结合

[root@zabbix day1]# cat continue.py 
#!/usr/local/python3/bin/python3
for i in range(10):
    if i < 5:
        print("layer1",i)
        continue
        for j in range(3):
            print("layer2",j)
            if j == 3:
                exit_tag = True   ##标志位,如果j=3时会退出
                break
        if exit_tag:              ##如果标志位是为真,这时循环也会退出
            break

 

(2).Python数据类型之列表的使用
描述:把某些数据存储下来,以实现增删查改
method1:
一般情况下存储,以变量的形式,缺点:有多少变量,就要用多少空间来存,最大问题他们之间没有任何关联性

name0 = 'a'
name1 = 'b'
name2 = 'c'
name3 = 'd'
name4 = 'e'

method2: 只是把数据存储下来,对其中的进行操作都很难实现

names = 'a b c d e'

method3: 列表形式存储,这种有位置关系,有下标,实现增删改查

number=['a','b','c','d','e']

  

列表
索引(下标) ,都是从0开始
切片
  .count 查某个元素的出现次数
  .index 根据内容找其对应的位置
  "hi" in a 列表里是否有某个元素

切片:查的操作,左包括,右不包括number[1:3] ,负号是从右往左走,第三个值是步长
print(number[1:]) # [1:] 取到最后一个值
print(number[1:-1]) # 取到倒数最后二个值
print(number[1:-1:1]) # 从左到右一个一个取
print(number[1:-1:2]) # 从左到右隔一个取一个
print(number[3::-2]) # 负号是从右开始走,第一个值下标是3,步长是2,中间是空是表示到最后

增加
  a.append() 追加
  a.insert(index, "内容")
  a.extend 扩展

append
number.append('guanwei') # append里面是放的是添加内容的值,其实number是一个对象
print(number)

insert
number.insert(0,'guanwei') # 第一个值是位置,insert执行时,还有一步查询的动作
print(number)

修改
  a[index] = "新的值"
  a[start:end] = [a,b,c]

修改 通过取出某值赋值的形式来修改
number[1]='taindi'
print(number)

修改两个值
number[1:3]=['you','me'] ## 中间赋值多个,如果没有对应赋值,会被删除
print(number) 

删除
  remove("内容")
  pop(index)
  del a, del a[index]
  a.clear() 清空
删除 remove pop del

remove 删除只对应内容,元素。为能用下标
number.remove('a')
print(number)

pop 删除后还会返回给对应的值,看需求,有时删除后还要对其内容进行操作
不指定默认是删除最后一个
number.pop(0)
print(number)

you=number.pop(0) # 有返回值
print(you)

del 怎么删除都可以,甚至对象
del number[0]
print(number)

 

补充:取多个一样的值不同位置的方法

a = ['wuchao','jinxin','xiaohu','ligang','sanpang','ligang']

first_lg_index = a.index("ligang") # 取和一个lg
print("first_lg_index",first_lg_index)

以第一个lg为开始,做切片,加1不想以第一个lg为开始,直接以'sanpang','ligang'开始
little_list = a[first_lg_index+1:]
print(little_list)

second_lg_index = little_list.index("ligang") # 在小列表里以取第二个lg
print("second_lg_ligang",second_lg_index)

在第一个的基础上+上第二个加1
second_lg_index_in_big_list = first_lg_index + second_lg_index +1
print("second_lg_index_in_big_list",second_lg_index_in_big_list)
print("second lg: ",a[second_lg_index_in_big_list])

 

其它方法:

extend

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> print(a)
[1, 2, 3, 4, 5, 6]
>>> print(b)
[4, 5, 6]

排序

sort () 排序
x = [3,4,1,2]
x.sort()
print(x) 

reverse() 倒序
a = ['wuchao','jinxin','xiaohu','ligang','sanpang','ligang']
a.reverse()
print(a)

身份判断

>>> type(a) is list
True

  

(3).Python数据类型之tuple(元组)
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,列表的切片操作同样适用于元组。
虽然tuple的元素不可改变,但它可以包含可变的对象,比如List列表构造包含0个或1个元素的元组比较特殊,所以有一些额外的语法法则
注意:元组里面加一个逗号,无论有无值

作用:
1.对于一些数据我们不想被修改,可以使用元组
2.另外,元组的意义不害于,元组可以在映射,(和集合成员)中当作使用一一列表则不行
元组作为很多内建函数和方法的返回值存在。

posted @ 2018-03-05 14:42  Reid21  阅读(137)  评论(0)    收藏  举报