Python3基础

1、Python变量

1.1变量命名规则:

1)变量名的长度不受限制,但其中的字符必须是字母、数字、或者下划线,而不能使用空格、标点符号等其他字符
2)变量名的第一个字符不能是数字,而必须是字母或下划线
3)Python区分大小写
4)不能将Python关键字用作变量名
5)变量必须先定义再复制,如 i=1

【例1.1-1】定义变量 

# Python中定义一个变量的方式
x=10
# 连续声明多个变量
a=b=c=1
# Python虽然是弱类型的语言,变量的类型由其值的类型决定,不用为变量声名类型
# 但是在Python中不能没有定义就使用如果x+=1、x[1]等等都是不行的,
# 局部变量也一样,哪怕外面存在同名的变量

 2、帮助

【例2-1】查看print函数的使用方法

help(print)  # 查看print函数的使用方法

   返回结果: 

Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)    ==>print函数在删除后默认换行
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:         ==>可选关键字参数
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

3、输入输出函数

【例3-1】print函数

# 输出字符
print("-"*15)   # 分隔用便于观看
print("红楼梦")
# 输出变量
print("-"*15)
i=1
print(i)
# 格式化输出
print("-"*15)
print("%s爱北京%s"%("我","天安门"))
print("{0}爱北京{1}".format("我","天安门"))
# 同时输出多个
print("-"*15)
print("红","楼","梦")  # 加逗号会有空格
print("红"+"楼"+"梦")  # +不会有空格,只能字符连字符或数字连数字
# 不换行输出
print("-"*15)
print("北",end="")   # 修改默认参数end(默认为/n)
print("京")
# 输出重定向
print("-"*15)
with  open("cdx.txt","w",encoding="utf-8") as f:   # 创建一个文件
    print("输出重定向",file=f)   # 将"输出重定向"写入到该文件
# 输出显示颜色
print("-"*15)
print("\033[1;31;47m红楼梦\033[0m")
print("\033[1;31m红楼梦\033[0m")

    返回结果 :

【例3-2】input函数

# 输入
i=input("请输入:")  # 提示并输入,input获取的输入为字符类,那怕输入的是数字
print(type(i))    # type函数获取变量类型,
# 转化为数字
j=input("请输入数字:")
print(type(float(j)))  # 将字符型数字强制转化为数字
# 控制输入
def contorlInputin(hint="请输入正整数:"):
    while True:
        i=input(hint)
        try:
            if int(i) in range(99**99):
                return int(i)
            else:
                print("请重新输入!")
        except:
            print("请重新输入!")
contorlInputin()

   返回结果 :

请输入:2
<class 'str'>
请输入数字:3
<class 'float'>
请输入正整数:3.4
请重新输入!
请输入正整数:4

4、Python数据类型

六个标准的数据类型】

Number(数字)    包括 int(%d)、float(%f)、bool、complex(复数),不可变数据  
String(字符串)  字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符,不可变数据  
List(列表)      列表可以完成大多数集合类的数据结构实现,可变数据
Tuple(元组)   元组与列表类似,不同之处在于元组的元素不能修改,元组写在小括号 () 里,不可变数据
Set(集合)   集合基本功能是进行成员关系测试和删除重复元素,可以使用大括号 { } 或者 set() 函数创建集合,创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典,不可变数据。
Dictionary(字典)   字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合,键(key)必须使用不可变类型,在同一个字典中,键(key)必须是唯一的,可变数据。

5、Python运算符

【例5-1】运算符

# 算术运算符
# +  -  *  / %  //  **  ==>  加、减、乘、除、取余、取商、次幂
print("-"*8)
print(13%5)
print(13//5)
print(2**3)
# 逻辑运算符
# == 是否相等  != 不等于  < 小于  > 大于 <= 小于等于  >=大于等于
print("-"*8)
print(5==4)
print(5>4)
# 赋值运算符
# =赋值 +=加法赋值 -=减法赋值 *=乘法赋值 **=幂赋值 /=除法赋值 %=取余赋值 //=取商赋值
print("-"*8)
i=1
i+=2
print(i)
i**=2
print(i)
# 逻辑运算符
# and "与" 全真才为真  or "或" 全假才为假  not "非"
print("-"*8)
print(4>3 and 3>5)
print(4>3 or 3>5)
print(not 4>3)
# 成员运算符
# in 在**里面返回真  not in 不在**里面返回真
print("-"*8)
print(1 in [1,2,4])
print(1 not in [1,2,4])
# 身份运算符
print("-"*8)
print(type(2) is int)
print(type("字符型") is str)

  返回结果:

--------
3
2
8
--------
False
True
--------
3
9
--------
True
False
--------
True
True

【例5-2】三元运算符

# 三元运算符
x=2
print(x if x>3 else 3)   # 如果x大于3返回x否则返回3
print(x if x<3 else 3)   # 如果x小于3返回x否则返回3
print(x<3 and x or 9)    # 如果x小于3返回x否则返回3
print(x>3 and x or 9)    # 如果x大于3返回x否则返回3

 返回结果:

3

2
3

【Python运算符优先级】

运算符描述
**指数 (最高优先级)
*  /  %  //乘,除,取模和取整除
+  -加法减法
<>  ==  !=等于运算符
=  %=  /= //=  -=  +=  *=  **=赋值运算符
is   is not身份运算符
in   not in成员运算符
and  or  not逻辑运算符

6、Python字符串

【例6-1】Python格式化字符

%s 字符串
%d 有符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%e 浮点数字(科学计数法)
%f 浮点数字(用小数点符号)

#!/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器;
#!/usr/bin/env python 这种用法是为了操作系统防止用户没有将python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到env设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。
#!/usr/bin/python 相当于写死了 python 路径;
#!/usr/bin/env python 会去环境设置寻找python目录,推荐这种写法

# Python是一种动态类型的语言,但是变量是无类型的
print("Hello World")   # 仪式感还是要有的
year=2018
month=8
day=31
print("%d年%d月%d日"%(year,month,day))       # 格式化输出
print("计算结果:{0:0.2f}".format(100/11))   # 格式化输出

   返回结果:

Hello World
2018年8月31日
计算结果:9.09

【例6-2】字符串索引、切片

# 字符串放在单引号、双引号、三引号之间,
s="A good plan today is better than a perfect plan tomorrow"  
# 切片
print(s[0])      # 索引,字符串索引从0开始到-1结束
print(s[-1])     # 索引
print(s[0:6])    # 正着切
print(s[-3:])    # 反着切
print(s[-6::2])  # 隔着切,没两个切一个

  返回结果: 

A
w
A good
row
mro

【例6-3】常用字符串处理函数

print("字符基本操作".center(86,"*"))    # 以指定字符和字符宽度两边对称填充
print("*"*8)            # 打印了指定个数的字符串
print("a"+"b")          # 字符串中 + 的作用连接字符
print(len("abcd"))      # 获取字符长度
print("ababc".count("a",0,len("ababc")))   # 查找字符串中指定字符的数量,len(ababc)省略默认也为len(ababc)

s="a Good Plan Today Is Better Than a perfect plan tmorrow"
print("大小写转换".center(86,"*"))    # 以指定字符和字符宽度两边对称填充
print(s.lower())               # 大写变小写
print(s.upper())               # 小写变大写
print(s.title())               # 单词首字母大写
print(s.capitalize())          # 单词首字母大写
print(s.swapcase())            # 大写变小写小写变大写
# casefold() 方法是Python3.3版本之后引入的,其效果和 lower() 方法非常相似,都可以转换字符串中所有大写字符为小写。
# lower() 方法只对ASCII编码(即‘A-Z’有效),对其他语言(非汉语或英文)中大写转换为小写的情况只能用 casefold() 方法。
print("ß".casefold())  # 德语B

print("字符查找修改".center(84,"*"))    # 以指定字符和字符宽度两边对称填充
print(s.strip("tmorrow"))      # 只会去掉两端的指定字符串
print(s.replace("T","t",1))    # 替换指定个数,默认全部替换
print(s.split(" "))            # 字符串切割,切边是会产生空字符串
print(s.startswith("A"))       # 判断是否以A开始
print(s.endswith("tmorrow"))   # 判断是否以tmorrow结尾
print(s.index("Good"))         # 查找指定字符的索引,不存在会报错

print("字符串判断".center(84,"*"))    # 以指定字符和字符宽度两边对称填充
print("1234q".isalnum())        # 判断是否是数字或者字母组成,不包含小数点
print("qwe".isalpha())          # 判断是否是字母组成
print("123".isdigit())          # 判断是否是数字组成,不包含小数点和负数
print("一1壹千".isnumeric())    # 判断是否是数字(包含中文数字)组成,不包含小数点

  返回结果: 

****************************************字符基本操作****************************************
********
ab
4
2
****************************************大小写转换*****************************************
a good plan today is better than a perfect plan tmorrow
A GOOD PLAN TODAY IS BETTER THAN A PERFECT PLAN TMORROW
A Good Plan Today Is Better Than A Perfect Plan Tmorrow
A good plan today is better than a perfect plan tmorrow
A gOOD pLAN tODAY iS bETTER tHAN A PERFECT PLAN TMORROW
ss
***************************************字符查找修改***************************************
a Good Plan Today Is Better Than a perfect plan 
a Good Plan today Is Better Than a perfect plan tmorrow
['a', 'Good', 'Plan', 'Today', 'Is', 'Better', 'Than', 'a', 'perfect', 'plan', 'tmorrow']
False
True
2
***************************************字符串判断****************************************
True
True
True
True
True

  【例6-4】查找

hlm="""《红楼梦》又名《石头记》、《金玉缘》,以贾、王、史、薛四大家族背景,
以贾宝玉和林黛玉的爱情故事为主线,围绕两个主要人物的感情纠葛,描写了大观园内外一系列青年男女的爱情故事。
同时,通过对这些爱情悲剧产生的社会环境描绘,牵涉到封建社会政治法律、宗法、妇女、道德、婚姻等方面的问题,
昭示了封建社会末期的世态,暴露了封建贵族阶级及其统治的腐朽与罪恶,
歌颂了追求光明的叛逆人物,通过叛逆者的悲剧命运宣告了这一社会必然走向灭亡。
可以说,《红楼梦》是一部我国封建社会后期社会生活的百科全书。 
"""
def findAll(string,findStr,start=None,end=None):
    indexs=[]
    if start==None:
        start=0
    if end==None:
        end=len(string)
    if str(int(start)).isdigit()==False or start>=end:  # 规范输入
        return None
    elif end>len(string)-1:
        end=len(string)-1
    index = int(start)
    while True:           # 循环查找
        index=string.find(findStr,index,int(end))
        if index!=-1:
            indexs.append(index)
            index+=1
        else:
            break
    return indexs    # 返回查找列表
print(findAll(hlm,"封建"))

返回结果:[113, 144, 157, 227]

】1.2 条件语句 

age=12
if age>60:      # 判断条件
    print("老了")
elif age>18:
    print("年轻人")
elif age>0:
    print("少年")  # 如果一行过长可以使用\换行,并且下一行不适用于缩进规则
else:
    pass       # pass 什么都不执行,但是不能省略

  日历练习:

# 判断闰年
# 普通年:能被4整除但不能被100整除的年份为普通闰年
# 世纪年:能被400整除的为世纪闰年
def isLeapYear(year):
    if (year%4==0 and year%100!=0) or year%400==0:
        return True
    else:
        return False

# 天数
def days(year,month):
    if month in [1,3,5,7,8,10,12]:
        return 31
    elif month in [4,6,9,11]:
        return 30
    elif isLeapYear(year) and month==2:
        return 29
    elif isLeapYear(year)==False and month==2:
        return 28

# 距离1900天数,1990年1月1日为星期一
def daysTo1990(year,month,day=0):
    sum=0
    for i in range(1900,year):
        if isLeapYear(i):
            sum+=366
        else:
            sum+=365
    for j in range(1,month):
        sum+=days(year,j)
    return sum+day

# 输出日历
def calendar(year,month):
    print("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六")
    week=daysTo1990(year,month,day=1)%7
    for i in range(week):
        print("\t",end="\t")
    for i in range(days(year,month)):
        if daysTo1990(year,month,day=i)%7==6 and i!=0:
            print("\n")
        print(i+1,end="\t\t")

# 控制输入年份
while True:
    year = input("请输入大于等于1990的整数:")
    if year.isdigit() and int(year)>=1900:
        year=int(year)
        break
# 控制输入月份
while True:
    month = input("请输入1~12之间的整数:")
    if month.isdigit() and int(month)>=1 and int(month)<=12:
        month=int(month)
        break
calendar(year,month)

  返回结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值