day01 python的基础语法
print的使用
会输出自己想要输出的内容,和要计算的表达式内容
例如:
print(450)
print('hello')
print('\n')#转义字符\,包括\n,\t,\b,\',\"
print(r'使转义字\n符失效')#r或R
print('234','578')#中间的,号输出时会变成空格。
name='hello'
print('标识',id(name))
print('类型',type(name))
print('值',name)#中间会有空格
print('hello'+'world')# +号为拼接符和java中的不同,中间无空格
print('hello'+123)#此代码错误,字符串无法和整数链接需要将整数变成字符串
print('hello'+str(123))
print("不换行输出",end='')#end是添加什么内容
二进制
8bit–1个字节byte(B)
1024byte=1kB 千兆吉太
1024KB=1MB,1024MB=1GB,1024GB=1TB,
中国字符ASCII–GB2313–GBK–GB18030,UTF-8统一标准英文用一个字节,中文用三个字节
Python的标识符和保留字
保留字
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
标识符
对类,函数,变量,模块。
规则:字母数字下滑线组成,不能以数字开头,严格区分大小写。
变量的使用
不像c语言一样根据类型定义。他是名字和右边具体组成
变量包括标识(内存地址利用id(obj)),类型(数据类型,内置函数用type(obj)来获取),值(print来获取)三部分。
name='hello'
name='world'
#多次赋值的变量的值为最新的空间。旧空间将会废弃。
数据类型
int, float,bool(ture,false),str(字符串,单引号或双引号均可。)
int (integer)默认为十进制,二进制要前面写0b开头例如0b10101
,八进制前要以0o开头0o327
,十六进制要以0x开头0x1E
.
float 存储不精确,可能出现小数不确定的情况。1.1+2.2出现错误
-
解决办法:导入decimal模块。
-
from decimal import Decimal print(Decimal('1.1')+Decimal('2.2'))
bool可以转成整数进行计算,ture为1,false为0
str 为字符串类型,不可变的字符序列,可以用‘ ’,” “,""" “”"来定义。单引号和双引号定义必须在一行。三引号定义的字符串可以分布在连续的多行。
name='hello'
name="helloworld"
name="""hellos
world"""
类型转换
不同类型拼接时需要用到类型转换
函数转换无法强制转换。
#三种函数转换
1、str(),将其他类型转为字符串
2、int(),将其他类型转为整数,float转int仅截取整数部分,舍掉小数部分。#只能转str为数字串的‘123’可以,但‘12.5’小数串不可以
3、float(),将其他类型转为浮点数,文字类的str无法转化,‘12.0’可以变成12.0。整数转化为float会加入.0。
以上转换都是假转化,仅在使用时是其转化类型,但变量本身的类型没有变化
注释
- 单行注释
- 多行注释 三引号之间的均可,”“” “”“,‘’‘ ’’‘
- 中文编码声明注释 #coding:gbk
输入input
输入的类型以str存储,赋值给某个名字。可以直接在输入时完场转化,str转化成int。
present=input('提示信息')
you=input('请输入你的名字')
you=int(input('输入'))
运算符
算关逻运算符
算数运算符
**+,-,*,/,%**取余,******幂次运算的结果。/和c语言不同,他可以1/2=0.5.他没有类型限制的计算。整除需要用两个//,1//2=0;
2**3为2的3次方。
注意点:一正一负如何计算,**整除时//,是向下取整。**9//-4=-3,9/-4=-2.2,向下取整为-3。取余时9%-4=-3,-9%4=3. 余数=被除数-除数*商 9-(-4)*(-3)=-3, -9-4*(-3)=3
赋值运算符,运算顺序从右往左。
- 支持链式赋值 a=b=c=20,c语言在定义时不允许如此定义,abc都是引用名,20仅一个空间
- 支持参数赋值 +=,-=,*=,/=,//=,%= q+=20–》 q=q+20;
- 支持系列解包赋值 a,b,c=10,20,30
关系(比较)运算符
<,>,<=,>=,!=,==,is,is not
比较运算符的运算结果为bool(Ture和False)
一个=为赋值,==为比较,比较的是两个值的value值是否相等,***比较标识是is***比较的是地址是否相同
a=10
b=10
print(a==b)#ture
print(a is b)#ture
print(a is not b)#false
10值会存在一个地址,你改变b不会改变a的值
list1=[11,22,33,44]
list2=[11,22,33,44]
print(list1=list2)#value--ture
print(list1 is list2)#id--false
逻辑运算符(bool运算符)
and,or,not,in,not in。
与或非,运算符两端是为bool值,结果也是bool,可以是bool变量也可以是关系表达式,逻辑表达式。
name='hello,world'
print('w' in name)
print('a' not in s)#元素是否存在在集合中!
位运算符
按位与,或,左移,右移
&,|,<<,>>
数字按照二进制来计算。左移一位乘以2,右移一位除以2
优先级
- 算数运算 ** > * / >+ -
- 位运算 左右移位 > & > |
- 关系运算(比较) (和c不同)
- 逻辑运算 (bool) and>or
- 赋值 =
程序的组织结构
- 顺序结构
- 选择结构 if
- 循环结构 while for-in
python一切皆对象bool函数
所有的对象都有一个布尔值,获取对象的布尔值 :使用内置函数 bool()
bool值为False:
- Flase
print(bool(Flase))
- 数值0
print(bool(0))
- None
print(bool(None))
- 空字符串
print(bool(''))
- 空列表
print(bool([]))``print(bool(list()))
- 空元组
print(bool(()))``print(bool(tuple()))
- 空字典
print(bool({}))``print(bool(dict()))
- 空集合
print(bool(set()))
除以上以外对象的bool值为Ture
基础语法选择与循环
单分支结构if语句
money=10000
s=int(input(输入取款金额))
if money>=s:
money-=s
print('取款成功,余额为:',money)
注意python有严重的对齐要求,代码的缩进表示语句的结构
双分支结构if-else
s=int(input('输入判定整数:'))
if s%2==0:
print('该数为偶数!')
else:
print('奇数!')
多分支结构if-elif-else
s=int(input('输入你的成绩:'))
if s>100:
print("你的成绩无效")
elif s>=90:
print("你的成绩为A")
elif s>=80:
print("你的成绩为B")
elif s>=70:
print("你的成绩为C")
elif s>=60:
print("你的成绩为D")
else:
print("成绩不合格")
python中允许使用60<=s<=70
条件表达式 X if 条件 else Y
a=int(input("a=:"))
b=int(input("b=:"))
print(a,'大于',b)
print((a,'大于等于',b) if a>=b else (a,'小于',b))
几乎没啥用,判断结果为Ture执行if前面内容,判断结果为Flase执行else后面内容
pass语句用于框架设计
什么都不做仅用于占位符,用到需要写语句的地方
a=10
if a<10:
pass
else:
pass
内置函数range序列
不需要进行添加类库,就可以直接使用的函数
print()
input()
int()
str()
float()
range()
以上均为内置函数
range() 用于生成一个整数序列,返回值是一个迭代器对象。
创建range对象的三种方式:
#1、range(stop)创建一个[0,stop)之间的整数序列,步长为1
r=range(10)
print(r) #输出:range(0, 10)
print(list(r))#list()为列表 结果为【1,2,3,4,5,6,7,8,9】
#2、range(start,stop)创建一个[start,stop)的整数序列,步长为1
r=range(2,10)
print(list(r)) #结果为:【2,3,4,5,6,7,8,9】
#3、range(start,stop,step)创建一个[start,stop)之间的整数序列步长为step
r=range(2,10,2)
print(list(r))#结果为:【2, 4, 6, 8】
所有的range对象都是相同的,因为仅仅需要存储start,stop,step。只有在用到range对象时,才会去计算序列中相关元素。
循环结构
while循环
while语句,满足条件则执行,不满足则跳出
while 条件表达式:
条件执行体
0-4的加和
sum=0#初始化变量
count=0
while count<5:#循环条件判定
sum+=count#循环执行
count+=1#循环变量增加
print(sum)
计算1-100之间的偶数和
sum=0
count=0
while count<101:
sum+=count
count+=2
print('100之内的偶数和为:'+str(sum))
for-in循环
in是从字符串或序列中依次取值,又称为遍历。for-in 遍历的对象必须是可迭代对象。range()可以产生一个可迭代对象条件为可迭代对象还有吗?有执行没有跳出。迭代对象有:字符串,序列,元组,字典
for 自定义语句 in 可迭代对象:
循环体
for item in 'python':#依次取出赋值给item
print(item)#可换行输出
题目:0-100的偶数和,range()可以产生一个整数的可迭代对象
sum=0
for i in range(0,101,2):
sum+=i
print(sum)
如果在循环体中不需要使用自定义变量,可将自定义变量写为“_”
for _ in range(10):
print('hello!')
题目:输出100-999之间的水仙花数--------水仙花数:153=13+53+3^3
for i in range(100,1000):
if ((i//100)**3+((i%100)//10)**3+(i%10)**3)==i:
print(str(i)+'为水仙花数')
break
用于提前结束循环结构,通常与分支if一起使用,循环本身有一个条件,满足时运行,不满足时跳出。但如果想要在中途面临一种情况时对其跳出循环处理用break来操作!
题目:输入密码可以一天输入5次,某次成功就可以跳出
count=0
while count<5:
count+=1
password=input('输入你的密码:')
if password=='88888888':
break
else:
print('密码输入错误!')
if count==5:
print("此卡已锁死!")
else:
print('密码正确请选择后续服务')
continue
跳过此次循环,此次循环continue语句一下的语句不在执行,进入下次循环。
题目:输出1-50之间所有5的倍数,使用continue
for i in range(1,51):
if i%5:
continue
print(i,'为5的倍数!')
else
可以和if结合执行非黑即白的语句
while-else和for-else语句 没有碰到break时执行else,不是特殊的跳出,而是正常的跳出! 意味着官方给加了一个循环条件全部执行完后应该做的操作。
count=0
while count<5:
count+=1
password=input('输入你的密码:')
if password=='88888888':
break
else:
print('密码输入错误!')
else: print('此卡已经锁死')
嵌套循环
for i in range(3):
for j in range(4):
print(i,j,end=' ')
print()
题目打印乘法表:
for i in range(1,10):
for j in range(1,i+1):
print(str(j)+'*'+str(i)+'='+str(i*j),end='\t')
print()
break和continue
仅跳出本层循环的使用!