突然想学python,边写边学
对象类型
两种情况,字符串用‘’或”“括起来,其他的不用,python里面不需要定义变量,直接赋值即可
ch='abc'
ch="abc"
a=5
强制类型转换
int('123')=123
str(123)='123'
float('123')=123.0
float(123)=123.0
bool(1)=Ture
bool(0)=False
运算符
和C区别不大
需要用到相关公式时引用math
在开头写
import math
以及**这个符号是幂次的意思,比如
2**4==pow(2,4)
优先级在乘除法以上
关系运算符
更直接了,and,or,not直接用,取代&&之类的
还有返回值
and:都真时返回后面的,有假返回假值
or:如果有真立即返回真值,如果结果为假返回后面的值
not:返回True或者False
标准(键盘)输入输出
ch=input('what you want to print')
也可以顺便做转换
ch=float(input())
输出的话用print(),大同小异
a=5
print(a)
print('Hello')
如果在同一行希望输入多个数据,用空格(或者逗号)分割的话,可以这样
string=input().spilt('分割符')
默认换行的
不换行可以这样写
print('Hello',end='')
格式化输出
n=5
pie=3.14
print('%3d %0.2f' % (n,pie))
print(format(n,'3d'),format(pie,'0.2f'))
print("{0:3d} {1:0.2f}".format(n,pie))
Tip:输出字符串里面有引号或者斜杠的话字符串用三引号括起来就可以了
结构
选择结构
不用大括号也不用小括号作为条件
条件写完后记得加:
缩进在判断语句内的都视为大括号以内一部分
grade=80
if grade>75 :
printf("a")
printf("belong if")
else
printf("b")
Tip:复杂代码可以用\来把一条句子分成两段写,提高可读性
多重if-else语句可以一步简化
grade=int(input())
if(grade>90):
print('A')
elif(grade>70):
print('B')
elif(grade>50):
print('C')
else:
print('D')
循环结构
while形式
同样无括号有分号,缩进代表循环
break,continue和C的用法一样
for形式
神奇了,for anelement in object
依次遍历对象中每个元素赋值给anelement,然后执行循环体语句
介绍下range函数
range(start,end,step)
可以这么用
range(11):从1开始遍历到10
range(2,11):从2开始遍历到10
range(11,2,-2):从10开始遍历到4
具体示范:
for letter in range(11):
print(letter)
定义函数
格式:def 函数名(参数):
函数体
return 可有可无
示范:
def fun(start,end):
return 0
暂时不想写的话写pass应付
缺省参数
简直开挂!传参不一定要数目匹配,如果少的话直接调用函数设定好的参数,举例
def fun(arg1,arg2=10,arg3=10):
print ('arg1=',arg1)
print('arg2=', arg2)
print('arg3=', arg3)
fun(10,2)
结果是10,2,10
变量作用域
和C语言是一样道理的
如果引用外面的话声明global
举例
global x
函数递归
不说了...
函数返回值
可以返回一组值并赋值给多个变量
def fun ():
a=5
b=6
return (a,b)
c,d=fun()
print(c,d)
介绍下新函数
import random
a=random.uniform(1,5)
返回1到5的浮点值
字符串
字符串常用法则
长度函数
对应于strlen(),python用len()就可以了
ch='a'
length=len(ch)
拼接与重复
可以使用+号和*号,简单方便
ch='a'
ch+='b'
ch*=3
结果分别是ab ababab
Tip:字符串相加是不会用ASCII转换成整数再相加的,要执行这类操作先进行类型转换
非字符串转化为字符串
x=3.4
print(str(x))
print(repr(x))#精确转化
print(format(x,'0.5f'))#特定格式
成员运算符in
返回值是Ture或者False
终于实现了字符串比较的梦想,举例
name='python'
print ('py' in python)
print ('n' in python)
这个 in和for里面的in是一个用法的
字符串索引
如果下标大于0的话和C一样
当下标等于-1的时候意味着最后一个字符,并且往回走下标变小
通过下标实现字符串的切片
语法:[start : finish]
如果不提供start 或者fininsh,默认从第一个字符开始,直到最后一个字符
直接举例
mystr='abcdefg'
mystr[:]='abcdefg'
mystr[1:]='bcdefg'
mystr[:6]='abcdef'
mystr[1:6]='bcdef]
通过下标实现计数参数
语法:[start:finish:step]
step默认为1
举例
mystr='abcdefg'
print(mystr[0:6:2])
print(mystr[::-1])
结果:
ace
gfedcba
Tip:不可以通过下标索引来修改字符串,可以通过切片生成新字符串
字符串方法
字符替换大法:
mystr='abcdefa'
mystr=mystr.replace('a','A')
print(mystr)
字符串里面所有a都会被替换成A,当然,也可以放字符串替换,长度不需要一致
更多:.find(‘字符串’)找出现的第一个位置,没有返回-1
spilt:有空格就会拆分(有空再写)
strip:去掉上下换行
title:首字母大写其余小写
文件读写
f=open('c.txt')
line=f.readline()#读取某一行内容
for line in f:#一行行读取,换行符也会被读取
print(line,end='')
f.close()
写入其余文件
c=open('b.txt','w')
print(line,file=c)
列表
列表基本操作
创建空列表:list=[]
或 name=list()
在列表某个下标前插入:list.insert(location,value)
删除列表中某个元素(传值)list.remove(value)
删除列表中某个元素(传位置)del list[location]
列表结尾增添元素list.append(value)
列表结尾删除元素list.pop(value)
列表升序排列list.sort()
或 sorted(list)
列表颠倒:list.reverse()
列表求和:sum=sum(list)
查找元素位置list.index(value)
打印列表:print(list)
嵌套列表或列表包含(list comprehension)
列表可以嵌套实现,比如
students=[['zhang',98],['wang',80]]
注意:len(students)=2
索引嵌套列表类似于C语言,用students[1][1]来看
成绩求和举例:
for student in students:
s+=student[1]
列表解析或推导
语法:[表达式 for 变量 in 列表 if 条件]
生成1-9 平方列表:
list=[x**2 for x in range(1,10)]
对数字x的因数求和:
sum([i for i in range(1,x+1)if x%i==0])
指定嵌套列表排序关键字
def f(a):
return a[1]
students.sort(key=f,reverse=True)
也可以用lambda函数
students.sort(key=lambda x:x[1],reverse=True)
元组&集合
元组
元组用圆括号创建,不能对内容修改但是可以增减
集合
集合用set()函数创建,无序,不能通过数字索引
集合支持一系列操作
并集|,交集&,差集-(前者减去两者共同项),对称集(两者并集减交集)
用add()在集合中增加一行或者用update()在集合中添加多行或者用remove删除一项
t.add()
t.update()
t.remove()
字典
基本操作
创建:`stcok={'zhang':100,'wamg':90}`
查找:`print(stcok['zhang'])`
获取关键字列表`print(list(stcok))`
删除元素:`del stcok['zhang']`