python基础 day1
真心觉得python这门语言是业界良心:
- 变量
- 用户输入
- 模块初识
- .pyc
- 数据类型
- 数据运算
- if…else
- break and continue
- while
一、变量\字符编码
声明变量
#-*-coding:utf-8 -*-
name="xmm"
声明了一个变量name,值为”xmm”。
变量定义的规则:
- 变量名只能是字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
[‘and’,’as’,’assert’,’break’,’class’,’continue’,’def’,’del’,’elif’,’else’,’except’,’exect’,’finally’,’for’,’from’,’global’,’if’,’import’,’in’,’is’,
‘lamba’,’not’,’or’,’pass’,’print’,’raise’,’return’,’try’,’while’,’yield’]
UTF-8是对Unicode编码的压缩和优化,它将所有的字符和符号进行分类:ASCII码中的内容用1个字节保存,欧洲字符用2个字节保存,亚洲字符用3个字节保存,python2默认用ASCII码编码,python3默认用UTF-8进行编码。”“”
二、注释
- 当行注释:#被注释内容
- 多行注释:3个”被注释内容
三、用户输入
_username="xzx"
_password="123456"
username=input("username:")
password=input("passwd:")
if _username==username and _password==password:
print("welcome user {name} login...".format(name==username))
else:
print("Invalid username or password!")
输入密码不想被看到,需利用getpass模块中的getpass方法,即:
import getpass
_username="xzx"
_password="123456"
username=input("username:")
password=getpass("passwd:")
if _username==username and _password==password:
print("welcome user {name} login...".format(name==username))
else:
print("Invalid username or password!")
四、模块初识
python3的标准库和第三方库很丰富和强大,先来看sys和os两个模块。
sys
import sys
print(sys.argv)
#输出
$ python test.py helo world
['test.py', 'helo', 'world'] #sys.argv能获取执行脚本时传递的参数
os
import os
os.system("df -h")#调用系统命令
进而可以有
import os,sys
os.system(' '.join(sys.argv[1:]))#将用户在命令行输入的参数结合成语句,作为系统命令调用
五 、.pyc文件
python是一门解释性语言,那么这里的c出现又是什么意思?
其实Python和Java/C#一样,也是一门基于虚拟机的语言,我们先来从表面上简单地了解一下Python程序的运行过程吧。当我们在命令行中输入python hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和Java一样,是编译。
PyCodeObject是python真正编译的结果,python程序运行时,编译的结果保存在PyCodeObject中,程序运行结束时,将PyCodeObject写回到pyc中 。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以说pyc文件其实是PyCodeObject的一种持久化保存方式。
六 、数据类型初识
1.数字
- int:32位机整数的位数为32位,64位机整数的位数为64位
- long:Python没有具体限制长整数数值的大小,但实际上不可能无限大
(如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果)- float:占8个字节(64位),52位表示底,11位表示指数,1位表示符号
- complex
2.布尔值
- True/False
- 1/0
3.字符串
格式化输出
name="xmx"
print("i am %s"% name)
#输出 i am xmx
字符串: %s;整数 :%d;浮点数:%f
字符串常用功能
- 移除空白
- 分割
- 长度
- 索引
- 切片
4.列表
创建列表:
car_list=["gelly","auto","volvo"]
#或
car_list=list(["gelly","auto","volvo"])
#这第二个也太累赘了吧!
- 索引
- 切片
- 追加
- 删除
- 长度
- 切片
- 循环
- 包含
5.元组(不可变列表)
格式化输出
num=(15,45,16,78,95,16)
#或
num=tuple((15,45,16,78,95,16))
#这第二个也太累赘了吧!
6.字典
创建字典:
car_list=["gelly","auto","volvo"]
#或
car_list=list(["gelly","auto","volvo"])
#这第二个也太累赘了吧!
- 索引
- 切片
- 追加
- 删除
- 长度
- 切片
- 循环
- 包含
七 、数据运算
算术运算:
a=3,b=9
运算符 | 描述 | 实例 |
---|---|---|
+ | 两对象相加 | a+b=12 |
- | 两对象相减 | a-b=-6 |
* | 两对象相乘 | a*b=27 |
/ | 两对象相除 | a/b=0.3333 |
% | 取模 | a%b=3 |
** | 取幂 | a**b=19683 |
// | 取整除 | a//b=0 |
比较运算:
a=3,b=9
运算符 | 描述 | 实例 |
---|---|---|
== | 相等 | (a==b)返回False |
!= | 不等 | (a!=b)返回True |
<> | 不等 | (a<>b)返回True |
> | 大于 | (a>b)返回False |
< | 小于 | (a<b)返回True |
>= | 大于等于 | (a>=b)返回False |
<= | 小于等于 | (a<=b)返回True |
赋值运算:
a=3,b=9
运算符 | 描述 | 实例 |
---|---|---|
= | 简单赋值 | c=a+b |
+= | 加法赋值 | a+=b |
-= | 加法赋值 | a+=b |
*= | 减法赋值 | a+=b |
/= | 除法赋值 | a+=b |
%= | 取模法赋值 | a+=b |
**= | 取幂法赋值 | a+=b |
//= | 取整除赋值 | a+=b |
逻辑运算:
a=3,b=9
运算符 | 描述 | 实例 |
---|---|---|
and | 与 | a and b为True |
or | 或 | a or b为True |
not | 非 | not(a and b)为False |
成员运算:
a=3,b=[1,2,3]
运算符 | 描述 | 实例 |
---|---|---|
in | 在序列中找到目标 | a in b为True |
not in | 在序列中找不到目标 | a not in b为False |
身份运算:
x=y=1
运算符 | 描述 | 实例 |
---|---|---|
is | 引用同一个对象 | x is y为True |
is not | 引用不同对象 | x is not y为False |
位运算:
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算 | a&b |
按位或运算 | ||
^ | 按位异或运算 | a^b |
~ | 按位取反运算 | ~a/~b |
>> | 按位右移运算 | a>>1 |
<< | 按位左移运算 | a<<1 |
a=56,b=34
print("c:",c=a&b)#c为32
print("c:",c=a|b)#c为58
print("c:",c=a^b)#c为26
print("c:",c=~a)#c为-57
print("c:",c=a<<2)#c为224
print("c:",c=a>>2)#c为14
运算符优先级
运算符 | 描述 |
---|---|
** | 指数(最高优先级) |
~ | 按位取反运算 |
*/%// | 乘、除、取模和取整除 |
+- | 加、减 |
>> << | 按位左右移运算 |
& | 按位与运算 |
^ | | 按位异或/或运算 |
<= < > >= | 比较运算 |
<> == != | 等于运算 |
= %= /= //= -= += = *= | 赋值运算 |
is is not | 身份运算 |
in not in | 成员运算 |
not or and | 逻辑运算 |
八 、表达式if…else
登录验证
#提示输入用户名和密码
#验证用户名和密码
#错误则输出错误
#成功则输出welcome
import getpass
name=input("请输入用户名:")
pwd=getpass.getpass("password:")
if name=='xmx' and pwd=='5697':
print("welcome,xmx")
else:
print("用户名或密码错误")
猜人头数
#提示用户输入猜测的人头数
#判断输出是否正确
#错误则提示大了还是小了
#成功则bingo
people_num=56
people_pre=input("你猜有几个人头:")
if people_pre==people_num:
print("bingo")
elif people_pre<people_num:
print("太少了吧,再猜")
else:
print("太多了吧,再猜")
三元表达式
result=值1 if cond else 值2
* 九、表达式for循环*
例1:
#循环打印10以内的数
#但5以内的数不打印
for i in range(10):
if i<5:
continue
print("loop:",i)
例2:
#循环打印10以内的数
#但大于5的数不打印
for i in range(10):
if i>5:
continue
print("loop:",i)
* 九、表达式while循环*
例1:
#循环打印100次结束
count=0
while True:
print("you are my sunshine:",count)
count+=1
if count==100:
print("oh shit")
break
例2:
#猜人头数,只能猜3次
people_num=56
count=0
while count<3:
people_pre=input("你猜有几个人头:")
if people_pre==people_num:
print("bingo")
break
elif people_pre<people_num:
print("太少了吧,再猜")
else:
print("太多了吧,再猜")
else:
print("憋猜了,辣鸡")