以前一直写java,目前需要写python3(p2语法可能不会指出),因此要简单的了解下二者的区别,以防混淆,再次只是记录一些简单的区别,后续会补充
如有任何错误,望告知,留言指出!
1. java每句都有“;”,p没有
2. 输出语句
java的循环循环语句需要使用“{” + “}”,p使用“:”
3. 循环中break 和continue的用法一致,但是p中的pass,用来站位
if(number % 2 == 0): pass else: odd.append(number)
4. java幂运算使用math的函数,p的幂运算,可用运算符“**”;p的“取整除 - 返回商的整数部分(向下取整)”符号是“//”
>>> 9 // 2 >>>4
10**20 是10的20次幂
5. p2中 “!=” 和“<>”都可用来比较两个对象是否相等,但是p3中“<>”已经废除
6. p的成员运算符
in:如果在指定的序列中找到值返回 True,否则返回 False。
eg:x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in :如果在指定的序列中没有找到值返回 True,否则返回 False。
eg:x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True
NB:if requested_topping in available_toppings: (if A in 列表:)
available_toppings = ['mushrooms', 'olives', 'green peppers',
'pepperoni', 'pineapple', 'extra cheese']#创建披萨店有的配料列表
requested_toppings = ['mushrooms', 'french fries', 'extra cheese']#创建顾客需要的配料列表
for requested_topping in requested_toppings:#遍历顾客点的配料
if requested_topping in available_toppings:#测试披萨店是否有顾客点的配料,若有则添加
print("Adding " + requested_topping + ".")
else:#若没有则执行else后面的代码块
print("Sorry, we don't have " + requested_topping + ".")
print("\nFinished making your pizza!")
#打印结果
Adding mushrooms.
Sorry, we don't have french fries.
Adding extra cheese.
Finished making your pizza!
7. p的身份运算符
身份运算符用于比较两个对象的存储单元。
is:是判断两个标识符是不是引用自一个对象
eg:x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not:是判断两个标识符是不是引用自不同对象
eg:x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False
8. 逻辑运算符
java:“&&” == p:“and” ;
java:“||” = p:“or”;
java:“!” = p:“not”;
9. 在 python 中,while … else 在循环条件为 false 时执行 else 语句块:
count = 0
while count < 5:
print(count, " is less than 5")
count = count + 1
else:
print(count, " is not less than 5")
#打印结果
0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5
10. p中没有do 。。。while循环
11. p的列表(p中没有数组这一个基本类型)
概念:
In[1]:students=['name','id','class','score']
print(students)
['name', 'id', 'class', 'score']
1. 依旧使用角标的方式访问元素,0表示第一个,类似数组,但是p同样可以用-1表示最后一个,-2表示倒数第二个,更快捷
2. 常用函数
append(),在末尾添加一个元素
insect(index,content)在index位置插入一个content
del 列表名【index】 :删除index位置的元素
len() :获得列表的大小
sort():排序
list():可以用于列表的创建 比如:空列表的创建:l = list() or l = []
12. 列表的遍历依旧使用for循环,和java类似
In[2]:
stus=['小米','小毛','小钱','小倩','小青']#创建一个列表
for stu in stus:#定义一个for循环,并从stus中取出一个名字存储在stu中
print("hello,"+stu.title()+"from China!")
#打印结果
hello,小米from China!
hello,小毛from China!
hello,小钱from China!
hello,小倩from China!
hello,小青from China!
13. 数值列表(p提供一些函数用来很好的创建和使用数值列表
13.1 rang()函数来创建数值列表
NB:注意不包括6
In[9]:
for value in range(1,6):#打印结果只到第二个值的前一个数
print(value)
#打印结果
1
2
3
4
5
使用range()函数时,还可以指定步长,比如打印1~10以内的偶数:
even_numbers=list(range(2,11,2))#函数range()从2开始,不断加2,直到达到或超过终值11
print(even_numbers)
#打印输出
[2, 4, 6, 8, 10]
13.2 max();min();sum()
13.3 列表的解析
14 切片
14.1 创建切片
可指定要使用的第一个元素和最后一个元素的索引。与函数range() 一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0、1 和2 的元素。
players=['charles','martina','michael','florence','eli']
print(players[0:3]
#打印输出
['charles', 'martina', 'michael']#打印了该列表的一个切片
players=['charles','martina','michael','florence','eli']
print(players[1:4])
#打印输出
['martina', 'michael', 'florence']
如果第一个索引没有指定,则默认从列表开头开始:
players=['charles','martina','michael','florence','eli']
print(players[:4])
#打印输出
['charles', 'martina', 'michael', 'florence']
同样如果第二个索引没有指定,则默认从列表末尾开始:
players=['charles','martina','michael','florence','eli']
print(players[2:])
#打印结果
['michael', 'florence', 'eli']
14.2 遍历切片
players=['charles','martina','michael','florence','eli']
print("Here are the first three players on my team:")
for player in players[:3]:#只遍历前三名队员
print(player.title())
#打印结果
Here are the first three players on my team:
Charles
Martina
Michael
14.3 复制列表
my_foods = ['pizza', 'falafel', 'carrot cake']#首先创建一个列表
friend_foods = my_foods[:]#取出列表的头尾切片,并将其存储到新列表中
print("My favorite foods are:")
print(my_foods)#打印出我喜欢的食物
print("\nMy friend's favorite foods are:")
print(friend_foods)#打印出朋友喜欢的食物,发现二者相同,实现了列表的复制
#打印结果
My favorite foods are:
['pizza', 'falafel', 'carrot cake']
My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake']
15. 缩进
java使用的 { } 来限定一个循环或者一个函数的内部。但是不要求缩进
p使用缩进来判断谁是循环体内,谁在循环体外。函数也同理。因此p必须有严格的缩进。否则有错误或者无法完成目的
并且常见的报错形式为:
16. if循环
java使用:if - else ; if - else if - else;
p使用:if - else; if - elif - else
age = 12
if age < 4:
print("Your admission cost is $0.")
elif age < 18:
print("Your admission cost is $5.")
else:
print("Your admission cost is $10.")
#打印输出
Your admission cost is $5.
Python中某些情况下else代码块可以省略,而选择用elif来实现,这样使得目的更加明确
age = 12
if age < 4:
price = 0
elif age < 18:
price = 5
elif age < 65:
price = 10
elif age >= 65:
price = 5
print("Your admission cost is $" + str(price) + ".")#只在条件测试结束后执行一次
17. 函数
print()输出
input()接收用户的字符
message = input("Tell me something, and I will repeat it back to you: ")#函数input() 接受一个参数:即要向用户显示的提示或说明,让用户 知道该如何做。
print(message)#用户输入信息后传递给message,再打印出来
#打印结果
Tell me something, and I will repeat it back to you: hello everyone!#用户自定义输入
hello everyone!#打印输出
自定义函数:def 函数名(参数):
函数的调用:使用定义的函数名,并且要传参(不需要定义变量的类型)
传递int等类型的整数时,传递的是函数的值,改变不了传递参数的参数本身,但是传递的是列表的时候,改变的就是列表本身,和java一样,可以参考下面的例子
def ChangeInt( a ):
a = 10
b = 2
ChangeInt(b)
print (b) # 结果是 2
#打印结果为2
下面是使用列表的形式
# 可写函数说明
def changeme( mylist ):
"修改传入的列表"
mylist.append([1,2,3,4])
print ("函数内取值: ", mylist)
return
# 调用changeme函数
mylist = [10,20,30]
changeme( mylist )
print ("函数外取值: ", mylist)
#打印结果
函数内取值: [10, 20, 30, [1, 2, 3, 4]]
函数外取值: [10, 20, 30, [1, 2, 3, 4]]
函数的传参
1. 默认传参:
调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:
#可写函数说明
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print ("Name: ", name)
print ("Age ", age)
return
#调用printinfo函数
printinfo( age=50, name="miki" )
printinfo( name="miki" )
#打印结果
Name: miki
Age 50
Name: miki
Age 35
2.关键字传参
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
#可写函数说明
def printinfo( name, age ):
"打印任何传入的字符串"
print ("Name: ", name)
print ("Age ", age)
return
#调用printinfo函数
printinfo( age=50, name="miki" )
#打印输出
Name: miki
Age 50
3.不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:
# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
for var in vartuple:
print (var)
return
# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )
#打印输出
输出:
10
输出:
70
60
50
4 匿名函数
python 使用 lambda 来创建匿名函数。
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda [arg1 [,arg2,.....argn]]:expression
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))
#打印结果
相加后的值为 : 30
相加后的值为 : 40