datawhaleDay1:Python基础

1、环境搭建和基础课程推荐

对于Python小白来说,推荐安装anaconda,可参考链接link,或link

Python入门基础课程推荐:
(1) 廖雪峰的Python教程,这是很多Python爱好者的入门教程,link
(2)菜鸟教程:link

2、Python初体验:输入和输出

(1)输出:print()
用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。

print("Hello,world!");

print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出。
-注意:print()会依次打印每个字符串,遇到逗号“,”会输出一个空格。

print("java","python","sql")

print()也可以打印整数,或者计算结果。

print(300,100)
print(300+100)
print('300+100=',300+100)  
# 单引号内为字符串,print依次打印出字符串,但对于300+100,Python解释器自动识别为公式计算,直接打印出结果。

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""。
Alt
(2)输入:input()
Python提供了一个input(),可以让用户输入字符串,并存放到一个变量里。要打印出name变量的内容,除了直接写name外,还可以用print()函数。

print(input())
input('Please input your name.') # 在输入交互时可以增加提示语句。
name = input('Please input your name.') # 把输入的内容存储到变量name里,无打印输出。
name
print(name,type(name))  # input()输入的结果在输出中是str格式。

3、Python基础

(1)python变量特性+命名规则
有关变量的规则:
–变量名只能包含字母、 数字和下划线。 变量名可以字母或下划线打头, 但不能以数字开头。
–变量名不能包含空格, 但可使用下划线来分隔其中的单词。 例如, 变量名greeting_message。
–不要将Python关键字和函数名用作变量名, 即不要使用Python保留用于特殊用途的单词, 如print 。
–变量名应既简短又具有描述性。 例如, name比n好, student_name比s_n好。
–慎用小写字母l和大写字母O, 因为它们可能被人错看成数字1和0。
–Python区分大小写,例如,user和User是不同变量。

(2)注释方法
Python的注释有单行注释和多行注释。
单行注释以#开头(按照PEP规范建议#后加一个空格),多行注释可以用多个#,也可以’’’……’’'或"""……"""。

# 这是单行注释。
print('hello,python!')
# 这是多行注释。
# 打印出hello,python!
'''
这是多行注释。
打印出hello,python!
'''

(3)python中“:”作用
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。我们将首行及后面的代码组称为一个子句(clause)。

(4)学会使用dir( )及和help( )
dir():查看变量可用的函数或方法。
help():查看模块、函数、变量的详细说明。

(5)import使用
在 python 用 import 或者 from…import 来导入相应的模块。
将整个模块(datetime)导入,格式为: import datetime
从某个模块中导入某个函数,格式为: from datetime import datetime
从某个模块中导入多个函数,格式为: from datetime import datetime,timedelta
将某个模块中的全部函数导入,格式为: from datetime import *

4、PEP8规范

PEP8规范比较全的资料:
(1)PEP 8 – Style Guide for Python Code:link
(2)PEP8中文翻译:link

比较需要注意的地方:可参考link:https://www.jianshu.com/p/ffcc66bab3ce

(1)缩进:每一级缩进使用4个空格,同一个代码块的语句必须包含相同的缩进空格数。

(2)多行语句:
-Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句。

total = item_one + \
        item_two + \
        item_three

-在 [], {}, 或 () 中的多行语句,不需要使用反斜杠()。

total = ['item_one', 'item_two', 'item_three',
        'item_four', 'item_five']

(3)空行:
–函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。
–类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
–空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
–记住:空行也是程序代码的一部分。

(4)import导入:
–导入通常在分开的行;
–导入总是位于文件的顶部,在模块注释和文档字符串之后,在模块的全局变量与常量之前。
–导入应该按照以下顺序分组:
1)标准库导入
2)相关第三方库导入
3)本地应用/库特定导入

(5)约定俗成的命名规定
1)Names to Avoid 应避免的名字
–永远不要使用字母‘l’(小写的L),‘O’(大写的O),或者‘I’(大写的I)作为单字符变量名。
–在有些字体里,这些字符无法和数字0和1区分,如果想用‘l’,用‘L’代替。
2)Class Names 类名
–类名一般使用首字母大写的约定。
–在接口被文档化并且主要被用于调用的情况下,可以使用函数的命名风格代替。
–注意,对于内置的变量命名有一个单独的约定:大部分内置变量是单个单词(或者两个单词连接在一起),首字母大写的命名法只用于异常名或者内部的常量。
3)Function Names 函数名
–函数名应该小写,如果想提高可读性可以用下划线分隔。
–大小写混合仅在为了兼容原来主要以大小写混合风格的情况下使用(比如 threading.py),保持向后兼容性。
4)Function and method arguments 函数和方法参数
–始终要将 self 作为实例方法的的第一个参数。
–始终要将 cls 作为类静态方法的第一个参数。
–如果函数的参数名和已有的关键词冲突,在最后加单一下划线比缩写或随意拼写更好。因此 class_ 比 clss 更好。(也许最好用同义词来避免这种冲突)

5、python数值基本知识

(1)python中数值类型:int,float,bool,complex。

a = 10
b = 20.2
c = True
d = a+3j
print(type(a)); print(type(b)); print(type(c)); print(type(d))  # type()可查看变量的数据类型
'''
print结果:
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'complex'>
'''
a = 111
isinstance(a,int)  # 结果输出True 或 False。 isinstance()也可用来判断变量类型。

isinstance 和 type 的区别在于:
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。

class A:
    pass

class B(A):
    pass

print(type(B()))  # <class '__main__.B'>
print(isinstance(B(),A))  # True
print(isinstance(B(),B))  # True

(2)算数运算符

# 算术运算符
a = 21
b = 10
c = 0
c = a + b
c = a - b
c = a * b
c = a / b
c = a // b  # //:取整除,向下取接近除数的整数。
c = a % b  # %:取模,返回除法的余数。

a = 2
b = 3
c = b ** a  # **:幂乘法

(3)逻辑运算符

# 逻辑运算符
a = 1
b = 2
print(a and b)  # 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
print(a or b)  # 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。
print(not (a and b))  # 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

(4)成员运算符

# 成员运算
a = 10
b = 20
List = [1, 2, 3, 4, 5]
a in List  # 如果在指定的序列中找到值返回 True,否则返回 False。
b not in List  # 如果在指定的序列中没有找到值返回 True,否则返回 False。

if a in List:
    print('a is in List.')
else:
    print('a is not in List.')

if b not in List:
    print('b is not in List.')
else:
    print('b is in List.')

(5)身份运算符:身份运算符用于比较两个对象的存储单元。

# 身份运算符(用于比较两个对象的存储单元)
x = 10
y = 10
z = 20
print(id(x))  # 1798472048
print(id(y))  # 1798472048
print(id(z))  # 1798472368

# x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False.
print(x is y)  # is 是判断两个标识符是不是引用自一个对象.  True
# x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
print(x is not y)  # is not 是判断两个标识符是不是引用自不同对象.  False
print(y is z)  # False

(6)比较运算符(即关系运算符)

# 比较运算符(关系运算符)
a = 21
b = 10
print(a == b)  # False
print(a != b)  # True.  a <> b 也是不等于
print(a > b)  # True
print(a < b)  # False
a = 10
print(a >= b)  # True
print(a <= b)  # True

(7)赋值运算符

'''赋值运算符
运算符	描述	                     实例
 =	  简单的赋值运算符	  c = a + b 将 a + b 的运算结果赋值为 c
 +=	  加法赋值运算符	  c += a 等效于 c = c + a
 -=	  减法赋值运算符	  c -= a 等效于 c = c - a
 *=	  乘法赋值运算符	  c *= a 等效于 c = c * a
 /=	  除法赋值运算符	  c /= a 等效于 c = c / a
 %=	  取模赋值运算符	  c %= a 等效于 c = c % a
 **=  幂赋值运算符	  c **= a 等效于 c = c ** a
//=	  取整除赋值运算符	  c //= a 等效于 c = c // a
'''
a = 21
b = 10
c = 0
c = a + b
c += a
c -= a
c *= a
c /= a
c %= a  # 取余
c = 2
c **= a
c //= a  # 取整除

(8)位运算符:按位运算符是把数字看作二进制来进行计算的。
Alt
(9)运算符优先级
Alt

# 运算符优先级
a = 20
b = 10
c = 15
d = 5
e = 2

e = (a + b) * c / d  # ( 30 * 15 ) / 5 = 90.0
e = ((a + b) * c) / d     # (30 * 15 ) / 5 = 90.0
e = (a + b) * (c / d)  # (30) * (15/5) = 90.0
e = a + (b * c) / d  # 20 + (150/5) = 50.0
f = d ** e * b  # (5 ** 2) * 10 = 250

6、string字符串

(1)定义及基本操作(+,*,读取方式)
字符串是一种常用的数据类型,Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。Python 访问子字符串,可以使用方括号来截取字符串。
Alt

# 字符串基本操作
a = "Hello"
b = "Python"

print("a + b 输出结果:", a + b)  # +:字符串连接;输出结果: HelloPython。
print("a * 2 输出结果:", a * 2)  # *:	重复输出字符串;输出结果: HelloHello。
print("a[1] 输出结果:", a[1])  # []:通过索引获取字符串中字符;索引数值从0开始。输出结果: e。
print("a[1:4] 输出结果:", a[1:4])  # [:]:截取字符串中的一部分,遵循左闭右开原则,str[0,2] 是不包含第 3 个字符的。输出结果: ell。

# 成员运算符 - 如果字符串中包含给定的字符返回 True
if "H" in a:
    print("H 在变量 a 中")
else:
    print("H 不在变量 a 中")

# 成员运算符 - 如果字符串中不包含给定的字符返回 True
if "M" not in a:
    print("M 不在变量 a 中")
else:
    print("M 在变量 a 中")

# 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 
# 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)。
print(r'\n')  # \n
print(R'\n')  # \n

(2)字符串相关方法

# 字符串常用内建函数:
s = 'python'
h = 'hello'
print(s.capitalize())  # capitalize():将字符串的第一个字符转换为大写.  Python
print(s.center(20))  # center(width, fillchar):返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。

# count(str, beg= 0,end=len(string)):
# 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
print(h.count('l'))

# encode(encoding='UTF-8',errors='strict'):
# 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'.

# endswith(suffix, beg=0, end=len(string)):
# 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
# startswith(substr, beg=0,end=len(string))
# 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
print(s.endswith('on'))
print(s.startswith('py'))

# find(str, beg=0 end=len(string))
# 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1;
# index(str, beg=0, end=len(string))
# 跟find()方法一样,只不过如果str不在字符串中会报一个异常.
print(h.find('he'))  # 0
print(h.find('lo'))  # 3
print(s.find('he'))  # -1
print(s.index('he'))  # ValueError: substring not found

# isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False.
# isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False.
# isdigit():如果字符串只包含数字则返回 True 否则返回 False.
# islower():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False.
# isupper():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False.
# isnumeric():如果字符串中只包含数字字符,则返回 True,否则返回 False.
# isspace():如果字符串中只包含空白,则返回 True,否则返回 False.
# istitle():如果字符串是标题化的(title())则返回 True,否则返回 False
a = 'hello,Python3  !'
b = 'helloPython'
c = '234'
print(a.isalnum())
print(b.isalnum())
print(c.isalnum())

print(a.isalpha())
print(b.isalpha())

print(a.isdigit())
print(c.isdigit())

print(a.islower())
print(b.islower())  # False
print(c.islower())

print(a.isupper())
print(b.isupper())  # False
print(c.isupper())

print(a.isnumeric())
print(c.isnumeric())  # True

print(a.isspace())  # False


# join(seq):以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
a = 'hello python hello java'
print(','.join(a))  #  h,e,l,l,o, ,p,y,t,h,o,n, ,h,e,l,l,o, ,j,a,v,a
# len(string):返回字符串长度
print(len(a))  # 23
print(a.upper())  # upper():小写转换成大写   lower():大写转换成小写
print(a.lstrip())  # lstrip():截掉字符串左边的空格或指定字符。  rstrip():删除字符串字符串末尾的空格.  strip([chars]):在字符串上执行 lstrip()rstrip()
print(a.replace('hello','hi'))  # replace(old, new [, max]):把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。
# split(str="", num=string.count(str)):num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串
print(a.split(' '))  # ['hello', 'python', 'hello', 'java']

(3)字符串格式化问题
有两种方法:一种使用占位符(%),另外一种使用字符串的format方法(str.format())。
Alt
Alt

# 字符串格式化
'''方法1
常见的占位符(%)有:
占位符	替换内容
    %d	整数
    %f	浮点数
    %s	字符串
    %x	十六进制整数
'''
a = 10
b = 5
c = a / b
print('a/b =%d'%c)  # a/b =2
print('a/b =%f'%c)  # a/b =2.000000
print('a/b =%.2f'%c)  # a/b =2.00   指定浮点数的小数点后的位数
s = "python"
print('Hello %s!'%s)

name = '小黑'
age = 6
print('我家养了一只狗,名字叫%s,今年%d岁了。'%(name,age))  # 我家养了一只狗,名字叫小黑,今年6岁了。

# 方法2:使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}{1}……。
print('a/b ={}'.format(c))  # a/b =2.0  format无需指定数据类型,会自动识别。
print('a/b ={:.2f}'.format(c))  # a/b =2.00 {:.2f}指定数据类型是浮点数且保留小数点后两位。
print('我家养了一只狗,名字叫{},今年{}岁了。'.format(name,age))  # {}无显示变量所在的数值位置,则默认按照.format后面的参数顺序.
print('我家养了一只狗,名字叫{1},今年{0}岁了。'.format(age,name))   # {0} {1} 指定变量的数值位置。

7、作业

要求用户依次输入姓名,性别,年龄,并对用户信息进行输出格式如下:您的姓名是:***,您的性别是:***,您是***年出生的。

name = input('请输入您的姓名:')
gender = input('请输入您的性别(男/女):')
age = input('请输入您的年龄:')
birth = 2019 - int(age)
print("您的姓名是:{},您的性别是:{},您是{}年出生的。".format(name,gender,birth))
'''输出结果:
请输入您的姓名:>? Huang
请输入您的性别(男/女):>? 女
请输入您的年龄:>? 20
您的姓名是:Huang,您的性别是:女,您是1999年出生的。
'''
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值