python基础

win7 下同时使用 python2  python3,把python2下的exe文件重命名为 python2.exe 即可。

执行python代码

执行py文件命令:

python  d:\test.py

python2  d:\test.py

解决python2输出中文报错问题:

         # -*- coding:utf-8 -*-

变量:可变的量

1.必须以数字、字母、下划线任意组,且不能以数字开关。

2.不能使用关键字。

常量:一直不变的量

         如:圆周率 【π】

注释:

单行: # 内容

多行:

    '''内容'''   
    """内容""",如果代码中有单引号''' ,则使用 双引号来注释  """

 用户交互:人机对话,只要提到用户交互,我们就会想到 input,注意input输入的都是字符串,即使输入了数字,结果还是字符串类型。

name = input("请输入你的名字:")
age = input("请输入你的年龄:")
print(name,age)

基础数据类型初识

type()  # 输出数据类型

print(type(1),type('1'))

结果显示:<class 'int'> <class 'str'>

 数字相加:运算

print(1+2)

返回结果:3

字符串相加: 相当于把2个字符串接在一起

name = '小'
name2 = '姐姐'
print(name+name2)

返回结果:小姐姐

 字符串乘数字:返回N个字符串

name = '小'
name2 = '姐姐'
print((name+name2)*3)

返回结果:小姐姐小姐姐小姐姐

当字符串为多行时,需要把所有内容引起来,再赋值给其他变量:

var = '''
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
'''
print(var)

返回结果:

床前明月光,疑是地上霜。
举头望明月,低头思故乡。 

bool: 布尔值  (真Ture或假False)首字母大写 

a = 3
b = 4
print(a>b)

返回False

print(type(True))  --》 <class 'bool'>

IF语句:条件为真,执行结果,否则跳过结果

方法一:只有一种结果,无选择

if 1:               # 条件为1 等于 if Ture ,但运行效率最高
    print('OK')

方法二:两种选择

a =1
b =2
if  a < b :
    print('a小于b')
else:
    print('a大于b')

多选:

num = int(input('请输入编号:'))   #input 默认接收到的为字符串,强制转换成int
if num == 1 :            # 如果上面不加int 此处可以写成 num == '1'  把1转换成字符串
    print('你选择了1号')
elif num == 2:
    print('你选择了2号')
elif num ==3 :
    print('你选择了3号')
else:
    print('你选择的编号不存在')

判断用户名登录是否正确:(简单版)

name = 'root'
password = 'qwer12345'
na = input('请输入您的用户名:')
passwd = input('请输入您的密码:')
if name == na and password == passwd:
    print('登录成功。')
else:
    print('用户名或密码错误。')

 

while 循环

while  条件:    # 条件为真,执行下面的循环体

循环体

while 1 :       #    条件为真一直执行下去,除非遇到结束条件,否则就死循环了
    print('hello')
    #continue , pass ,break   只有break能结束此循环

continue 跳出本次循环  , break 中止循环

ps :while 1 比 while true 效率更高,计算机直接识别01代码

 使用while 输出 1-100

a=1
while a <=100:
    print(a)
    a+=1

输出1+到100的和

a=1
sum = 0
while a <=100:
    # print(a)
    sum += a
    a+=1
print(sum)

while else

当while循环没有被break中断才会执行else的内容,如果出现了break则不会执行else的内容

a = 0
while a <=5 :
    a += 1
    if  a == 3:break
    print('break中断:',a)
else:
    print('while正常结束')
print('---end---')
=========输出结果=======
break中断: 1
break中断: 2
---end---

当a=3时while循环中断,跳出循环体,最后执行最后一条print()

练习题:

 1 #!/usr/bin/env python                   
 2 # -*- coding:utf-8 -*-           
 3 # Author: xy    
 4 #1.使用while循环输出 1 2 3 4 5 6 8 9 10
 5 i= 0
 6 while i < 10:
 7     i=i+1
 8     if i==7:
 9         continue
10     else:
11         print(i)
使用while循环输出 1 2 3 4 5 6 8 9 10
1 #2.求1-100的和
2 i =0
3 sum=0
4 while i< 100:
5     i=i+1
6     sum=sum+i
7 print(sum)
求1-100的和
1 #3.输出1-100内所有奇数
2 i =0
3 while i< 100:
4     i=i+1
5     if i%2==0:
6         continue
7     else:print(i)
输出1-100内所有奇数
1 #3.输出1-100内所有偶数
2 i =0
3 while i< 100:
4     i=i+1
5     if i%2==0:
6         print(i)
7     else:continue
输出1-100内所有偶数
 1 #5.求1-2+3-4+5...99的和
 2 i =0
 3 sum1=0
 4 while i< 100:
 5     i=i+1
 6     if i%2==0:
 7         continue
 8     else:
 9         sum1=sum1+i
10 j=0
11 sum2=0
12 while j< 100:
13     j=j+1
14     if j%2==0:
15         sum2 = sum2 + j
16     else:
17         continue
18 print(sum1-sum2)
求1-2+3-4+5...99的和
 1 #6.用户登录验证(三次机会)
 2 user = 'root'
 3 password = '123456'
 4 i=0
 5 while i<3:
 6     i=i+1
 7     u = input("请输入用户名:")
 8     p = input("请输入密码:")
 9     if user == u and password == p :
10         print("恭喜你登录成功!")
11         break
12     else:
13         print("用户名或密码输入错误!")
用户登录验证(三次机会)

 

格式化输出

 指定一个模板,只要输入对应的内容就可以输出想要的内容,

例:填写一个自己信息的表格,输入姓名、年龄、身高等信息,模板已经打印出来,把自己的信息填写上去就可以输出一张完整的表格了。

 

#格式化输出
name = input('姓名:')
age = input('年龄:')
height = input('身高:')
tables = '我叫%s,今年%s ,身高%s'%(name,age,height)
print(tables)

=============
#输出结果
姓名:越进
年龄:18
身高:180
我叫越进,今年18 ,身高180

 

说明:%s  

       %: 表示占位符,类似给出一个空格给别人填写

       s: 数据类型的简写 str (%s) ,也可以使用其它的如 digit (数字)  (%d)

t = “我是XXX, 今年XXX  身高XXX ” %(顺序1,顺序2,顺序3)   #类似这样

 

例:使用下面的模板,替换成自己的信息 

tables = '''
--------------info of xxx-------------------
Name : xxxx
Age : xx
job :xxxx
Hobbie :xxx
-------------------end-----------------------'''

 

name = input('姓名:')
age = int(input('年龄:'))        #input 默认输出字符,强制转换成Int类型
job = input('工作:')
hobbie = input('爱好:')
tables = '''
--------------info of %s  -------------------
Name    :%s
Age     :%s                      #%d 数字
job     :%s
Hobbie  :%s
-------------------end-----------------------'''%(name,name,age,job,hobbie)   #1.这里的%号不加s,变量数量对应前面的%s个数; 2.不能换行写
print(tables)

踩坑1: %(name,name,age,job,hobbie)   此处% 后不加s 

踩坑2:input() 默认输出为字符 

踩坑3:有几个点位符,最后的%() 里就要几个变量,并且按顺序写

提示:如果要输出%使用 %% ,第一个为转意符,第2个%才是直接输出的%

name = input('姓名:')
age = int(input('年龄:'))
work = input('工作进度:')
tables = '''
--------------info of %s  -------------------
Name    :姓名:%s
Age     :年龄:%s
work    :工作进度:%s%%
-------------------end-----------------------'''%(name,name,age,work)
print(tables)
=================显示结果==========================
--------------info of xiaoyao ------------------- Name :姓名:xiaoyao Age :年龄:18 work :工作进度:5% -------------------end-----------------------

 

 

字符编码

 

运算符

优先级:()  >  not   >  and   > or  

x or y     #x为真(非0)后面就不用判断了,直接返回x的值

3>4 or 4<3 and 1==1	#F
1 < 2 and 3 < 4 or 1>2 	#T
2 > 1 and 3 < 4 or 4 > 5 and 2 < 1	#T
1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8	#F
1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6	#F
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6  #F

 int  转 bool  : 非零为True   ,  零为False

 

print(bool(2))     # 非零 True
print(bool(-1))  #非零  True

 bool   转 int  :

 

print(int(True))     # 1  
print(int(False))    # 0
注意:True False 首字母都要大写,否则会报错。

 

字符串与布尔值 str --> bool

s =””  # 空字符串   --> false

s=”有数据”  # 非空   --> true

例:前后端验证用户使用,直接if 返回结果判断是否为空。

 

 

数据类型:

int 用于计算

bool 用户判断 True  , False

str 字符串,存储少量数据,进去操作

list 列表  [1,2,3,…]   能存储的数据很多

元祖:(1,2,3…)  只读列表,不能修改

dict: 字典 {‘name’:’张三’,’age’:16}

         字典{‘张三’:[],’李四’:[1,2,3,5….]}

集合:{1,2,3,’abc’}

 

 i=  2 ,  i.xxx  调用数字类型的方法 : 变量名.方法名

i =100
print(i.bit_length()) # 输出100(二进制)占位符 1100100  ,结果:7 

数据类型转换

int 转换 str 

a = 1
s = str(a)
print(type(a),type(s))

=====返回结果=====
<class 'int'> <class 'str'>

str 转换 int (str必须为数字才能转换)

s = '1'
a = int(s)
print(type(a),type(s))

=====返回结果=====
<class 'int'> <class 'str'>

int 转换成 bool (非0都是True , 为0则是False)

 

a  = 1
b = 0
i = bool(a)
j = bool(b)
print('i=',i,',','j=',j)

=====返回结果=====
i= True , j= False

 

 

bool 转换成int   (True = 1  , False = 0 )

 

str转换成bool  (空字符串 = False , 非空 = True)

例:前后端验证用户时使用,直接if 判断接收到的字符串是否为空

s ='1'
if s  :      
    print('非空')  # 判断 s 为非空字符串
else:
    print('空')    # 判断 s 为空字符串

=====返回结果=====
非空

字符串的索引与切片

 索引: 即字符串的下标

s ='abcdefgh'   #下标从0开始
s1=s[0]
print(s1)    #输出第一个字符a

s1与 s 有区别,两者是不同的字符串。

 字符串切片操作:

切片(一次取出多个),顾头不顾尾

s ='abcdefgh'   
s1=s[0:4]     # 只取第0 1 2 3位
print(s1)     #返回结果:abcd

取字符串最后一位, 使用 -1

s ='abcdefgh'
s1=s[-1]      #只取最后一位
print(s1)     #返回结果:h

取字符串s的总长度:print(len(s))  #len() : 长度 ,中文也是一个字符

取全部字符串 

s ='abcdefgh'  
s1=s[0:]      #方法一
s2=s[:]       #方法二
print(s1,s2)    #返回结果:abcdefgh  abcdefgh

跳着取 s[索引开始:索引结束:步长]  #步长不写默认为1

s ='abcdefgh'
s1=s[0:5:2]    #步长为2,取出第0 2 4
print(s1)     #返回结果:ace

取出结果为:dcba  ,从中间切开并倒序取

s ='abcdefgh'    
s1=s[3::-1]    #倒序取-1 ,原则顾头不顾尾,所以不能写成[3:0:-1]
print(s1)     #返回结果:dcba

倒序取出所有值:

s ='abcdefgh'
s1=s[::-1]
print(s1)

字符串操作

查看字符串str 有多少操作方法,按住Ctrl键点击 str即可进入

首字母大写:capitalize()

s ='python'
s1=s.capitalize()
print(s1)

全部变成大写:upper()

s ='python'
s1=s.upper()
print(s1)

全部变成小写:lower()

s ='PYTHON'
s1=s.lower()
print(s1)

验证码对比, 对数字没有影响

s = 'baIB'                    #验证码
s1 = input("请输入验证码,不区分大小写:")    #输入验证码
if s.lower() == s1.lower():          #都转换成小写 也可以使用 s.upper() == s1.upper() 
    print("验证成功!")
else:
    print("验证失败!")

大小写反转:swapcase()

s ='PyThON'
s1=s.swapcase()
print(s1)      #返回结果:pYtHon

首字母大写,但中间有特殊字符或者数字: title()

s ='python@llk123qq'      #字符串中出现了@ 123
s1=s.title()           #首字母,特殊字符、数字出现后的第一个字符变成大写
print(s1)              #返回结果:Python@Llk123Qq

居中显示,并可以加填充符号,默认为空格: center(总点位数,’默认空格’)

s ='python'
s1=s.center(20,'@')   #共占20个字符指定字符串居中,不足20的使用指定符号@填充
print(s1)         #返回结果:@@@@@@@python@@@@@@@

当有制表符\t出现时,自动补8位  expandtabs()

s ='python\tlinux'   #字符串中出现转意符
s1=s.expandtabs()    #转意
print(s1)        #返回结果:python  linux

判断一个未知的字符串前2位由什么组成的startswith()

s ='python\tlinux'
s1=s.startswith('py')  #判断是否以 py 开头,是返回True, 否返回False
print(s1)        #返回结果:True

判断一个未知的字符串前2位由什么组成的endswith()

s ='python\tlinux'
s1=s.endswith('x')    #判断是否以 x 结尾,
print(s1)          #返回结果:True

 

 

 

公共方法:字符串、数组、元祖都可以使用

学习方法:如何知道方法名的功能

  1. 直接百度搜索方法名        
  2. 按ctrl键点进去看源码 #英文好的推荐看源码

 

 

 

 

 

 

 

 

 

持续更新中。。。。。。

 

转载于:https://www.cnblogs.com/csxy-py/p/9252425.html