python基础知识小结
本文主要包括:
- 注释
- 变量
- 数据类型
- 运算符
- 输入输出
- 分支、循环
- 代码示例
python注释
注释,即一段文字性的描述,格式为:
# 内容
,注释一行;'''内容 '''
,注释多行;- 文件头加:
# ! /usr/bin/env python
语句,指定编译器路径,使得./* .py
命令正确执行。
注释的应用场景:
- 厘清代码逻辑;
- 添加注释,减少合作者的沟通成本;
- 可用于调试;
python中文乱码
乱码产生原因:字符编码使用标准不一;
python变量
变量是一个存储数据的容器,变量引用着某个具体的数值且可改变。
定义变量的三种方式:
-
变量名 = 值;
-
变量名1,变量名字2 = 值1,值2;
-
a = b = 3;
看代码:
//
a=2
print(a) //输出为 2
//
a,b=2,3
print(a,b)//输出为 2 3
//
a=b=3
print(a,b) //输出为3 3
Tips:
- 选中代码 ->
ctrl +/
,快捷注释; ctrl + r
,替换;
Note:
- 一个变量只能引用一个数值;
- 变量命名规范:字母数字下划线,驼峰命名,区分大小写;、
- 变量名使用前必须赋值;
- 变量名不能与关键字同;
python数据类型
数据类型,对程序处理的数据进行分类。
常用的数据类型:
Number
数值类型;Bool
布尔类型String
字符串List
列表Set
集合Tuple
元组Dictory
字典NoneType
空类型
使用type()
判断一个数据的类型:
result=type("6")
print(result)
# 输出 <class 'int'>
python语言是强类型语言,不支持不同类型值得操作。
一段类型转换代码:
num="6"
print(4 + int(num))
# 字符型转int型,输出 10
print(str(4) + num)
#输出字符型46
score=input()
print(score + 6)
# error,input输入后得数据是字符串类型
print(type(score))
Note:
- 不是所有的数据类型都能互相转换;
补充:
先看一组概念,
- 静态类型:类型是编译的时候确定的,后期无法修改;
- 动态类型:类型是运行时进行判定的,可以动态修改;
再看一组概念:
- 强类型:不轻易随着环境的变化而变化;
- 弱类型:容易改变;
所以,python是强类型的,动态类型的语言。
python 运算符
算术运算符中,需要注意的点:
/
除法;//
整除;%
取余;**
取幂;
复合运算符,有:+=
、-=
、*=
、%=
、**=
、//=
。
比较运算符,如>
、<>
、!=
、==
、is
、链式比较运算符5 < num <10
,比较运算符的结果是Bool
类型。
看一段代码:
a=10
b=10
print id(a),id(b)
#输出相同的地址内容
print a is b
# True,因为指向相同的内存
a=[1];
b=[1];
print a==b
# True 值相同
print a is b
# False 指向不同
逻辑运算符
not
取反,示例:b=False print(not b)
and
一假全假or
一真全真
python 输入输出
处理数据的程序,数据输入有:
- 程序内部写死的;
- 从文件里面读取;
- 网络服务器进行获取;
- 接受用户的输入;
程序处理完数据后,数据输出有:
- 写回文件保存;
- 发送回服务器;
- 打印到控制台,并展示。
函数eval(content)
将content
当作代码使用,看代码:
content=input("请输入内容:")
print(type(content))
print(content)
```
输入 1+1
输出 str 1+1
```
content=input("请输入内容:")
result=eval(content)
# 将用户输入的内容当作代码处理
print(type(result))
print(result)
```
输入 1+1
输出 int
```
输出函数print(values,sep,end,file,flash)
,其中,
values
是需要输出的值,多个值使用,
分割;
sep
是分割符,当输出多个值时,使用该分割符号进行分割;
end
默认是换行符号\n
,以该字符结束;
file
是输出的目标,默认是控制台;
flash
表示立即输出,为bool
类型。
基于python2
的输出,看代码:
# _*_coding:utf-8 _*_
# 输出一个值
num=10
print num
# 多个变量
num1=11
print num,num1
# 格式化输出
name=na
age=10
print "名字%s,年龄是%d"%(name,age)
print "名字{0},年龄是{1}".format(name,age)
newStr="名字%s,年龄是%d"%(name,age)
print newStr
# 以上3种方式,效果相同
#输出到文件
f=open("test.txt","w")
print >> f "输出到文件中的内容"
# 输出内容,使用特定分割符
print "-".join(["a","b","c"])
# 输出为 a-b-c
基于python3
的输出示例代码:
# 输出多个变量
num=10
print(num)
num1=11
print(num,num1)
#格式化输出
name=na
age=10
print("名字%s,年龄是%d" %(name,age))
print("名字{0},年龄是{1}".format(name,age))
#format是字符串的一个方法
# 输出到文件
f=open("text.txt","w")
print("输出到文件的内容",file=f)
# 或者头文件加 import sys 则:
print("输出到文件的内容",file=sys.stdout)
# 两者效果相同
# 输出但不自动换行
print("abc",end="")
# 指定分割符
print("1","2",sep="*")
# 休眠x秒,头文件加:from time import sleep
sleep(5)
格式化输出的一点补充:
看代码:
math=59
print("%d" %math)
#59
print("%5d" %math)
# 59 右对齐,5位
print("%-5d" %math)
#59 左对齐,5位
print("% d" %math)
# 59 左边一个空格
#小数点精度
math=59.9
print("%f" %math)
# 59.900000
print("%.2f"%math)
# 59.90
常用的typecode
类型
typecode | 效果 |
---|---|
d | 将整数、浮点数转换成十进制表示 |
o | 将整数、浮点数转换成八进制表示 |
x | 将整数、浮点数转换成十六进制表示 |
e | 将整数、浮点数转换成转换成科学计数法表示 |
f | 转换成浮点数表示 |
g | 将整数、浮点数转换成转换成科学计数法表示,但会自动调整。 |
s | 打印字符串 |
r | |
c | 将数字转换成unicode 下对应的值,反之相同。如print("%c" %97) ,输出a |
python
中不存在将整数转化为二进制的格式符,即不存在%b
。
python 示例
描述:采集一个人身高、体重、年龄、性别的信息,计算出体脂率。公式供参考:
B M I = 体 重 ( k g ) / 身 高 ( 米 ) 2 体 脂 率 = 1.2 ∗ B M I + 0.23 ∗ 年 龄 − 5.4 − 10.8 ∗ 性 别 ( 男 : 1 , 女 : 0 ) 百 分 比 : 男 性 , 15 ∼ 18 ; 女 性 , 25 ∼ 28 BMI =体重(kg)/身高(米)^{2} \\ 体脂率=1.2*BMI +0.23*年龄-5.4-10.8*性别(男:1,女:0)\\ 百分比:{男性,15{\sim}18;女性,25{\sim}28}\\ BMI=体重(kg)/身高(米)2体脂率=1.2∗BMI+0.23∗年龄−5.4−10.8∗性别(男:1,女:0)百分比:男性,15∼18;女性,25∼28
要点:注释、输入输出、变量使用、运算符使用、数据类型转换。
功能分析:
- 输入:身高、体重、年龄、性别;
- 处理:计算体脂率、判断是否处于标准水平;
- 输出:输出体脂率,判断是否合格;
看代码:
# 输入:身高、体重、年龄、性别;
personHeight=input("输入身高(m):")
personHeight=float(personHeight)
personWeight=input("输入体重(kg):")
personWeight=float(personWeight)
personAge=input("输入年龄:")
personAge=int(personAge)
personSex=input("输入性别(男:1,女:0):")
personSex=int(personSex)
# 处理:计算体脂率、判断是否处于标准水平;
BMI=personWeight/(personHeight*personHeight)
# input接收到字符串,此处需要转类型
TZL=1.2*BMI +0.23*personAge-5.4-10.8*personSex
minNum=0.15+0.10+(1-personSex)
maxNum=0.18+0.10+(1-personSex)
result=minNum<TZL<maxNum
# 输出:输出体脂率,合格否;
print("合格标准?" result)
分支和循环
python
分支的语法:
if 条件:
代码块一
elif 条件:
代码块二
else
代码块三
使用示例:
# 输入:身高、体重、年龄、性别;
personHeight=input("输入身高(m):")
personHeight=float(personHeight)
personWeight=input("输入体重(kg):")
personWeight=float(personWeight)
personAge=input("输入年龄:")
personAge=int(personAge)
personSex=input("输入性别(男:1,女:0):")
personSex=int(personSex)
if not(0<personHeight<3 and
0<personWeight<300 and
0<personAge<150 and
(personSex==0 or personSex==1)):
print("数据输入有误")
exit()
# 处理:计算体脂率、判断是否处于标准水平;
BMI=personWeight/(personHeight*personHeight)
# input接收到字符串,此处需要转类型
TZL=1.2*BMI +0.23*personAge-5.4-10.8*personSex
if(personSex==1):
result=0.15 < TZL < 0.18
else:
result=0.25 < TZL < 0.28
# 输出:输出体脂率,合格否;
if result:
notice="标准"
else:
notice="不标准"
print(notice)
Note:依靠缩进判断if
与else
配对问题。
python
循环语法有2种:
while
循环;for
循环,用来遍历集合。
使用示例:
num=0
sum=0
while num<10:
sum+=num
++num
print(sum,num)
# while + else
num=0
while num<10:
num+=1
print("num:",num)
else:
print("执行完毕,num:",num)
Note:python
中没有do...while()
,一定要有循环结束条件。
for
循环语法:for x in xxx:
使用实例:
notice="hello world"
for c in notice:
print(c)
pets=["xiaohau","xiaohuang","xiaolan"]
for name in pets:
print(name)
# for + else
notice="hello world"
for c in notice:
print(c)
# break 则直接跳出,不会经过else
else:
print("遍历结束")
反转字符串:
# 反转字符串
notice="待反转字符串"
result=""
for c in notice:
result+=c
print(result)
打印1~100之间的偶数:
for i in range(1,101):
if i%2==0:
print(i)
循环中使用break
和continue
,示例:
for i in range(1,11):
if i==6:
break
print(i)
# 1 2 3 4 5
for i in range(1,11):
if i==6:
continue
print(i)
# 1 2 3 4 5 7 8 9 10
循环分支嵌套,示例:
nums=range(1,101)
for i in nums:
for j in (1,3):
print(num)
# 打印9*9乘法表
for i in range(1,10):
for j in range(1,i+1):
print("%d * %d = %d" %(j,i,i*j),end='\t')
补充:Pass
语句
pass
语句是空语句,一般用作占位语句。是为了保持程序结构的完整性。
age=19
if age>18:
pass
# 暂时放置空语句,占个位置
else:
pass
# 编译不会报错
示例
- 判断水仙花数。即一个3位数,如果百位的三次方 + 十位的三次方 + 个位的三次方 = 数值本身,则该数为水仙花数,如153是一个水仙花数。
num=input("输入一个三位数:")
num=int(num)
if not (100<=num<=999):
print("无效输入")
exit() # 程序结束
# 数据无误,继续执行
baiwei=num //100
shiwei=num* 100 //10
gewei=num % 10
#判断
result = ((baiwei**3 + shiwei**3 + gewei**3) == num)
if result:
print("是")
else:
print("否")
未完,待续…