1.基础1

一.print

print('hello python!')
# 打印多个String
print('x', 'yz')
# 打印多行
print('''line1
line2
line3 line4
line5
''')

print(r'hello,"python"')
print(r'''
hello
lis''')

print('中国'.encode('utf-8'))
print(b'\xe4\xb8\xad\xe5\x9b\xbd'.decode('utf-8'))
print(len('中'))

# 占位符
print('hi,%s,you have %d $' % ('lisa', 101010))

# 前面补空格
print('%d' % 1)
print('%2d' % 1)
print('%3d' % 1)

# 保留两位小数
print('%.2f%%' % 3.1111)

输出结果:

hello python!
x yz
line1
line2
line3 line4
line5

hello,"python"

hello
lis
b'\xe4\xb8\xad\xe5\x9b\xbd'
中国
1
hi,lisa,you have 101010 $
1
 1
  1
3.11%

二、list和tuple

1.list,相当于java里的List
基础操作:

# 定义一个list
list = ['111', '222', '333']
# 输出list的长度
print(len(list))
# 在后面添加一项
list.append("444")
# 插入到第一项
list.insert(1, '000')
print(list)
# 输出第1个和倒数第一个和倒数第二个
print(list[1], list[-1], list[-2])
# 删除倒数第二个
list.pop(-2)
print(list)

输出结果:

3
['111', '000', '222', '333', '444']
000 444 333
['111', '000', '222', '444']

2.list的元素可以是混合类型

l = ['sss', 11, True, ["111", "222"]]
print(l)
print(l[0], l[2], l[3][1])

输出结果:

['sss', 11, True, ['111', '222']]
sss True 222

3.tuple,相当于java里的数组
tuple和list的最主要的区别是tuple初始化后,元素是不可变的,不能使用append和insert,pop等方法,其它用法和list基本一致,例如index,list[1]等。

# 定义一个tuple
t = (1, 2, 3)
print(t[1])
# 定义一个空的tuple
t = ()
print(t)
# 定义一个只有一个元素的tuple,必须加个逗号,否则和数学运算符里的()冲突,被认为是1
t = (1,)
print(t)

输出结果:

2
()
(1,)

三、dict和set

1.定义:dict为python内置的字典,全称为dictionary,相当于JAVA里的map,使用key-value键值形式存储;
2.常用操作

# 定义一个dict
students = {'z1': 18,
            'z2': 19,
            "z3": 20}
# 另一种定义的方式
# students = dict([('z1', 18), ('z2', 19)])

# 取值
print(students['z1'], students.get('z2'))

# 获取一个不存在的键对应的值
print(students.get('zz'))

# 获取一个键对应的值,如果不存在赋默认值
print(students.get('zz', 123))

# 判断z1是否在students中
print('z1' in students)

# 删除一对键值
print(students.pop("z1"))
print(students)

输出结果:
18 19
None
123
True
18
{'z2': 19, 'z3': 20}

2.总结:dict里一个key对应一个value,如果有多个相同的key,则以最后一个key的值为准,dict查找和插入速度快,耗费内存空间大,和list正好相反。
3.set:set是一组key的集合,没有value,并且set中没有重复的值,重复的元素在set中会自动被过滤

# 定义一个set
s = set([1, 1, 2, 2, 3])
# s = {1, 1, 2, 2, 3}
print(s)
# 删除元素
s.remove(1)
# 增加元素
s.add(4)
print(s)

s1 = {3, 4, 5}
# 取s和s1的交集
print(s & s1)
# 取s和s1的并集
print(s | s1)
输出结果:
{1, 2, 3}
{2, 3, 4}
{3, 4}
{2, 3, 4, 5}

Process finished with exit code 0

注意:list和tuple是有序的,dict和set是无序的

四、语法

a = 85
# if判断语句
if a > 90:
    print("A")
elif a > 80:
    print('B')
else:
    print('C')

t = [1, 2, 3, 4, 5, 6]
s = 0
# for循环
for i in t:
    print(i)
    s += i
print(s)

# range生成0到100的整数序列,再用list转成list后通过sum操作符可计算出整个list的和
print(sum(list(range(101))))

# while操作
t1 = 100
s1 = 0
while t1 > 0:
    s1 += t1
    t1 -= 1
    if t1 % 2 == 0:
        continue
    if t1 < 50:
        break
print(s1)

输出结果:
B
1
2
3
4
5
6
21
5050
3825

五、函数

1.位置参数

# 定义一个函数
def sum(i1, i2):
    return i1 + i2


print(sum(1, 2))


输出结果:
3

2.默认参数

# 定义一个函数,并定义一个有默认值的变量
def method1(name, age, addr='shanghai'):
    print('name:' + name)
    print('age:' + age)
    print('addr:' + addr)


method1('大一', '19', 'beijing')
method1('大二', '20')


# 定义一个默认为空list的变量
def method2(l=[]):
    l.append('111')
    return l


print(method2())  # L初始为[],运行后被赋值为['111']
print(method2())  # L刚被赋值后初始为['111'],运行后被赋值为['111','111']
print(method2())


# 解决上面的错误
def method3(l=None):
    if l is None:
        l = []
    l.append('111')
    return l


print(method3())
print(method3())
print(method3())


输出结果:
name:大一
age:19
addr:beijing
name:大二
age:20
addr:shanghai
['111']
['111', '111']
['111', '111', '111']
['111']
['111']
['111']

3.可变参数
可变参数可以传入0个或任意多个参数

def method4(*i):
    s = 0
    for n in i:
        s += n
    return s


print(method4(1, 2, 3))

# 把一个list作为参数传入
l1 = [1, 2, 3]
print(method4(*l1))

输出结果:
6
6

4.关键字参数

def method5(name, age, **i):
    print('''
name:%s
age:%s
i:%s
    ''' % (name, age, i))


method5('AA', '20', arg1='11', arg2='22')

# 把一个dict作为参数传入
d1 = {'arg1': 11, 'arg2': 22}
method5('BB', '20', **d1)

输出结果:
name:AA
age:20
i:{'arg1': '11', 'arg2': '22'}


name:BB
age:20
i:{'arg1': 11, 'arg2': 22}

5.命名关键字参数
关键字参数可以被传入任意的参数,参数名不受控制,导致在方法里想获取可变参数里的键对应的值时有可能结果为None,还得通过if “arg” in i 判断才能保证安全,这种情况下可以用命名关键字参数控制参数名;

def method6(name, age, *, arg1, arg2):
    print(name, age, arg1, arg2)


# 命名关键字参数必需传入参数名,否则报错
# method6('CC', 20, 1, 2) #错误的写法
method6('CC', 20, arg1=1, arg2=2)


# 如果参数中有一个可变参数了,后面的命名关键字参数就不需要再写*隔开了
def method7(name, age, *arg1, arg2):
    print(name, age, arg1, arg2)


method7("DD", 20, [1, 2], arg2=2)

输出结果:
CC 20 1 2
DD 20 ([1, 2],) 2

6.五种参数组合使用时需要按位置参数、默认参数、可变参数,命名关键字参数和关键字参数的顺序来写

def method8(arg1, arg2=2, *arg3, arg4, **arg5):
    print('''
    arg1:%s
    arg2:%s
    arg3:%s
    arg4:%s
    arg5:%s
    ''' % (arg1, arg2, arg3, arg4, arg5))


method8("111", arg4=4)
method8("111", 22, arg4=4)
method8("111", 22, '3a', '3b', arg4=4)
method8("111", 22, "3a", "3b", arg4=4, arg5=555)

输出结果:

    arg1:111
    arg2:2
    arg3:()
    arg4:4
    arg5:{}


    arg1:111
    arg2:22
    arg3:()
    arg4:4
    arg5:{}


    arg1:111
    arg2:22
    arg3:('3a', '3b')
    arg4:4
    arg5:{}


    arg1:111
    arg2:22
    arg3:('3a', '3b')
    arg4:4
    arg5:{'arg5': 555}

猜你喜欢

转载自blog.csdn.net/aislli/article/details/81075968