1. python中无char字符类型
2. python中"//"才是整除,c++整除用"/"
3. 96.54%10的值不会默认保留2位小数
print(98.12 / 10)
print(98.12 % 10)
print("%.2f" % (98.12 % 10))
print(98.12 // 10)
输出:
9.812000000000001
8.120000000000005
8.12
9.0
4. 2个变量赋值和交换可以直接写在同一行
#已知a,b都是变量,写出将a,b两个变量中的值互换的代码
a,b=1,2
a,b = b,a
print("a,b两个值互换",a,b)
输出:a,b两个值互换 2 1
5. 指定输出格式方式不同
#c语言直接 print("%d %s",score,"A")
#而python需要
print("%d %s" % (score,"A"))
print("%d" % score,"%s" % "A")
score=100
print("分数:%d 等级:%s" % (score,"A"))
print("分数:%d" % score,"等级:%s" % "A")
输出:
分数:100 等级:A
分数:100 等级:A
6. 位运算:python中的按位取反
~9 = -10
首先,把十进制数转化成二进制数,即 1001。
第二步,由于二进制数在内存中以补码的形式存储,所以我们需要把第一步得到的二进制数转成补码,要成补码,先把原码转化成反码。即 01001,(正数原反补一样)。第一个0为补充上去的符号位,最后得到补码01001。
第三步,按位进行取反,把第二步得到的补码进行按位取反(即10110)。
第四步,把第三步的操作转为补码(重点:二进制数在内存中以补码的形式存储!!),但是由于按位取反后变为负数,所以我们需要用负数的原反补规则,先每一位取反变成(11001),然后反码末尾+1得到补码(即11010);注意:负数符号位不参与变换,为1。
第五步,把第四步得到的补码转成十进制数就是结果,为 -10。
print(bin(~0b00110101))
输出:-0b110110
7. 选中内容,Tab键,缩进4个空格,Shift+Tab则返回
8. \t 制表符的使用
for m in range(1,10):
for n in range(1,9):
print("%2d × %d = %d" % (m,n,m*n),end=' ')
print()
print()
输出:
加每个print的end中加了制表符之后:
# 使用制表符
for m in range(1,10):
for n in range(1,9):
print("%2d × %d = %d" % (m,n,m*n),end='\t')
print()
print()
输出:
9. str.isdigit() 判断字符串是否只包含数字字符
score = input("请输入你的成绩:")
if score.isdigit(): #判断字符串是否只包含数字字符,判定输入的成绩是否是正整数
score =int(score) #把字符串转换成字符型
if score >= 0 and score<=100:
if score >= 80:
print("奖金100元")
print("假期10天")
else:
print("奖金 -100元")
print("假期 -10天")
else:
print("请输入正确的成绩")
else:
print("你输入的有错误,不是一个正整数类型")
print("结束")
输入:90a, 输出:你输入的有错误,不是一个正整数类型
输入:92.4,输出:你输入的有错误,不是一个正整数类型
输入:90, 输出:奖金100元
假期10天
输入:60, 输出:奖金 -100元
假期 -10天
10.只要执行return,函数就结束
return语句用于退出函数,并向调用方返回一个表达式,不带参数值的return语句返回None。
def find(lst,obj,start=0):
if start < 0 or start >= len(lst):
return -1
for i in range(start,len(lst)):
if lst[i] == obj:
return i # 只要执行retur函数就结束
return -1
nums = [1,2,3,4,5,6,7,8,5,4,3,2]
print(find(nums,4))
只找出第一个4的位置
输出:3
11. *args
和 **kwargs
*args是用来发送一个非键值对的可变数量的参数列表给一个函数。当传入的参数个数未知,且不需要知道参数名称时使用。
**kwargs 允许将不定长度的键值对作为参数传递给一个函数。如果想要在一个函数里处理带名字的参数时使用。
def func1(*args):
print(type(args))
for v in args:
name = v[0]
sex = v[1]
age = v[2]
print("name is %s , sex id %s , age is %s" % (name,sex,age))
print()
func1(["张三","男",30],["李四","女",28],["王五","男",24])
def func2(**kwargs):
print(type(kwargs))
for k,v in kwargs.items():
print(k,v)
print()
func2(name="张无忌",age=36)
输出:
<class 'tuple'>
name is 张三 , sex id 男 , age is 30
name is 李四 , sex id 女 , age is 28
name is 王五 , sex id 男 , age is 24
<class 'dict'>
name 张无忌
age 36
12. lambda表达式
def func(x,y,z):
return x + y + z
print(func(1,2,3))
f = lambda x,y,z:x+y+z
print(f(1,2,3))
输出:
6
6
13.ASCII码和字符串的转换
33-47 ! " # $ % & ' ( ) * + , - . /
48-57 数字0-9
123-126 { | } ~
97-122 小写字母a-z
91-96 : ; < = > ? @
65-90 大写字母A-Z
58-64 [ \ ] ^ _ `
ASCII码转字符:chr(int) 0-127
字符转ASCII码:ord(str) 单个可见ASCII字符串,不能中文和非ASCII码里的字符
# 编写函数contain_all_letter(words)检查一个字符串words是否包含所有英文字母(不区分大小写)
def contain_all_letter(words):
for i in range(97,123):
if words.find(chr(i)) == -1 and words.find(chr(i-32)) == -1:
return "不包含所有英文字母"
else:
return "包含所有英文字母"
print("abcd",contain_all_letter("abcd"))
print("ABCdefghijklmnopqrstuvwxyz",contain_all_letter("ABCdefghijklmnopqrstuvwxyz"))
输出:
abcd 不包含所有英文字母
ABCdefghijklmnopqrstuvwxyz 包含所有英文字母