国庆八天的休假说长不短,说短不长,趁着宅在家中的时间,打算从0开始学python。
1.基础
1.1 变量
python变量定义比较简单,不需要定义数据类型,直接写,就可以赋值
num=1
str="str"
与之相比,java中定义变量就得定义数据类型
int num = 1;
String str = "str";
还有不同的是,python中有复数的定义,java中就没有
查看变量的类型
print(type("i")) #<class 'str'>
1.2 标识符关键字
数字,字母,下划线组成,区分大小写,数字不能开头。
关键字可以用keyword查看。
import keyword
keywordList = keyword.kwlist
print(keywordList)
1.3 输入与输出
python2 里面输入是raw_input(),而python3里面是input()。
输出是 print()。
python的输出和C++有点类似
str =input("请输入内容")
print("输入的内容%s长度是%d"%(str,len(str)))
1.4 运算符
+,-,*,/,%。
需要注意的是 / 返回的类型是根据参数而定的,如果除数被除数都是整型返回的就是整型,如果有浮点型,那返回的就是浮点型。
#round(num,取值位数)
print(round(2.5/2,1)) #1.2
与java不同的地方有**代表幂运算,//代表结果取整
#幂运算
print(2**10)#1K
print(2**20)#1M
print(2**30)#1G
2.判断语句和循环语句
2.1 if判断
与java的花括号不同,python的if格式是用缩进来判断,if判断成功后,执行缩进中的内容
python中没有else if的写法,elif替代
inputNum =int(input("please input any number"))
if inputNum >=0 and inputNum <10:
print("0 <= num < 10,num=%d"%inputNum)
elif inputNum >=10 and inputNum <20:
print("10 <= num < 20,num=%d"%inputNum)
else:
print("%d"%inputNum)
2.2 while循环
满足条件不停循环,和java没什么区别
2.3 for循环
for有点像java的foreach循环,但for不仅支持列表,也支持字符串
'''
输出:
a
b
c
d
e
'''
str = "abcde"
for i in str:
print(i)
for...else表示for循环正常结束后(即不是break跳出),执行else代码块
for num in range(10,20): # 迭代 10 到 20 之间的数字
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print('%d 等于 %d * %d' % (num,i,j))
break # 跳出当前循环
else: # 循环的 else 部分
print (num, '是一个质数')
2.4 continue与break
不支持break/continue a的语法,只能break/continue最近一层循环
2.5 应用
写了个猜拳小游戏练习了下基础
import random
while True:
player = input("请输入 剪刀(0) 石头(1) 布(2),结束游戏请输入end")
if(player == "end"):
break
if(not player.isnumeric()):
print("请输入数字")
continue
else:
player = int(player)
if(player <0 or player > 2):
print("请输入0,1,2")
continue
system = random.randint(0,2)
if player - system == 1 or player - system == -2:
print("获胜")
elif player == system:
print("平局")
else:
print("输了")
3.函数,字符串,列表
3.1 简单函数
函数定义
#分割线
def line():
print("-"*12+"华丽的分割线"+"-"*12)
3.1.1 时间函数
import time # 引入time模块
currentTime = time.time() #返回从1970.1.1开始至今的秒数
nowTime = time.asctime(time.localtime(currentTime))
print("当前时间戳为:", currentTime)
print("本地时间为:",nowTime)
3.1.2 日历
import calendar
cal = calendar.month(2017, 10)
print("2017年10月份的日历:")
print(cal)
3.1.3 随机函数
import random
for i in range(0,10):
print(random.randint(0,100))
3.2 字符串
python对字符串操作有一套现成的方法,操作起来异常简单
3.2.1 取索引
str = "hello world"
print(str[2:-1]) #从下标2的地方取到倒数第一位。'llo worl'
print(str[2:]) #从下标2的地方取到最后一位。'llo world'
3.2.2 格式化
和c++的类似
常用的就%s,%d,%f
3.2.3 find & rfind
检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1
find:从左边开始找
rfind:从右边开始找
str = "hello world"
print(str.find('world', 0, len(str))) #6
3.2.4 index & rindex
跟find()方法一样,只不过找不到,会报异常.
index:从左边开始找
rindex:从右边开始找
str = "hello world"
print(str.index('world', 0, len(str))) #6
3.2.4 count
返回出现的次数
str = "hello world"
print(str.count('world', 0, len(str))) #1
3.2.4 replace
替换内容,如果 count 指定,则替换不超过 count 次.
str = "hello world"
print(str.replace('world', 'python', str.count('world'))) #hello python
3.2.4 split
切割返回列表
str = "hello world"
print(str.split(' ')) #['hello', 'world']
3.2.5 capitalize
第一个字母大写
str = "hello world"
print(str.capitalize()) #Hello world
3.2.6 startswith & endswith
判断是否以什么开头,以什么结尾
str = "hello world"
print(str.startswith("h")) #True
print(str.endswith("d")) #True
3.2.7 lower & upper
字符串全部转为小写,全部转为大写
3.2.8 ljust & rjust & center
ljust:返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
rjust:返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
center:返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
str = "hello world"
print("|"+str.ljust(20)+"|") #|hello world |
print("|"+str.rjust(20)+"|") #| hello world|
print("|"+str.center(20)+"|") #| hello world |
3.2.9 lstrip & rstrip
lstrip:删除左边的空格
rstrip:删除右边的空格
str = " hello world "
print("|"+str.lstrip()+"|") #|hello world |
print("|"+str.rstrip()+"|") #| hello world|
3.2.10 partition & rpartition
分割成三部分,str前,str和str后
partition:从左边开始
rpartition:从右边开始
str = "hello world"
print(str.partition('l')) #('he', 'l', 'lo world')
print(str.rpartition('l')) #('hello wor', 'l', 'd')
3.2.11 splitlines
按照行分隔,返回一个包含各行作为元素的列表
str = "hell\no wor\nld"
print(str.splitlines()) #['hell', 'o wor', 'ld']
3.2.12 isalnum
如果字符都是字母或数字则返回 True,否则返回 False
3.2.13 isalpha
如果字符只包含字母则返回 True,否则返回 False
3.2.14 isdigit
如果字符只包含数字则返回 True,否则返回 False
3.2.15 isspace
如果字符只包含空格,则返回 True,否则返回 False.
3.2.16 isupper
如果字符都是大写,则返回 True,否则返回 False.
3.2.17 islower
如果字符都是小写,则返回 True,否则返回 False.
3.2.18 join
每个字符后面插入,构造出一个新的字符串
str = "hello world"
print("*".join(str)) #h*e*l*l*o* *w*o*r*l*d
3.3 列表
列表支持不同数据类型在同一个列表中,java一个数组只支持一种数据类型
3.3.1 索引
'''
输出
xiaoWang
xiaoZhang
xiaoHua
'''
A = ['xiaoWang','xiaoZhang','xiaoHua']
print(A[0])
print(A[1])
print(A[2]
3.3.2 for循环
'''
输出
xiaoWang
xiaoZhang
xiaoHua
'''
A = ['xiaoWang','xiaoZhang','xiaoHua']
for tempName in A:
print(tempName)
3.3.3 增:append
通过append可以向列表添加元素,添加到最后位置
A = ['xiaoWang','xiaoZhang','xiaoHua']
A.append("xiaoMing")
3.3.4 改:=
通过下标来赋值
A = ['xiaoWang','xiaoZhang','xiaoHua']
A[0] = "xiaoMing"
3.3.5 查: in / not in
A = ['xiaoWang','xiaoZhang','xiaoHua']
if 'xiaoWang' in A:
print("find")
3.3.6 删:del / remove / pop
del:根据下表删除
remove:根据内容删除
pop:删除最后一个元素(最新添加的元素)