用了点时间了解了一下Python的变量,字符串,集合,字典,判断,循环相关内容
过程尝试代码和注意内容如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# [\]表示转义,大量转义也可以用r替代 ,\n表示换行,\t表示制表符
# I'm SmileFish
print("I'm SmileFish")
# I'm SmileFish
print('I\'m SmileFish')
# http:\www.deepiot.com
print('http:\\www.deepiot.com')
# http:\\www.deepiot.com
print('http:\\\\www.deepiot.com')
# http:\\www.deepiot.com
print(r'http:\\www.deepiot.com')
# 字符串内部换行 除了\n 还有 '''...''' 提示符模式下,编程模式直接'''开始,'''结束,中间换行就行了
print('''line1
line2
line3''')
# 变量赋值,在Python中通过变量给变量赋值是把值赋予变量,并不是把指向给变量,如下输出是ABC
a = 'ABC'
b = a
a = 'XYZ'
print(b)
# Python除法都是精确除法,使用//可以进行地板除,只保留整数位,取余数用 %
# 3.3333 3 1 关于浮点数准确性的问题,参考文章:https://www.zhihu.com/question/25457573
print(10 / 3)
print(10 // 3)
print(10 % 3)
print(0.1 + 0.1 + 0.1)
# Python的整数和浮点数都没有范围限制,超出了就是inf
a = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
print(a)
# ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
print(ord('微'))
print(ord('笑'))
print(ord('的'))
print(ord('鱼'))
print('\u4e2d\u6587')
# encode()和decode()提供了字符转换方法,中文无法被转ascii。decode的errors='ignore'可以忽略无效字符
print('微笑的鱼'.encode('utf-8'))
print(b'\xe5\xbe\xae\xe7\xac\x91\xe7\x9a\x84\xe9\xb1'.decode('utf-8', errors='ignore'))
# %实现格式化字符串,%d 整数;%f 浮点数;%s 字符串;%x 16进制
# 小数位数和补零3.14 3-01(3前边有一个空格 %2d 有一个0 没显示)
print('%.2f' % 3.1415926)
print('%2d-%02d' % (3, 1))
# 也可以用类似java或者C#的方式 format()方法
print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125))
r = (85 - 72) * 100 / 72
print('小明的成绩从去年的72分提升到今天的85分,他的成绩提升了%.1f%%' % r)
# Python的集合比较有意思,类似java的数组,有序且没有类型限制,也可以进行嵌套,有点像NOSQL?
# 追加append(),插入insert(index,str),末尾删除pop(),指定删除pop(index),替换就是变量赋值
s = ['python', 'java', ['asp', 'php'], 'scheme']
print(len(s))
# 想要输出php 需要用二维数组写法
print(s[2][1])
# tuple是一个特殊的有序列表,定以后不能变更,有点类似于常量。但是由于列表中的类型是不定的,如果列表中有[]集合,那么数组集合中的数据是可以变的
arr = ('A', 'B', 'C')
print(arr[0])
# 条件判断也挺有意思 else-if 被缩写成了elif,另外判断条件可以是单变量 只要不是非空 非零 非空集合就是True
x = 1
if x:
print(x)
# Python的for循环有点类似于foreach,只不过写法变成了 for itme in arrs
# 另外可以通过range()函数生成一个从0开始的整数序列
sum = 0
for x in range(101):
sum += x
print(sum)
print(list(range(6)))
# while循环 break continue 都和java类似
n = 0
while n < 10:
n = n + 1
# 如果n是偶数,执行continue语句
if n % 2 == 0:
# continue语句会直接继续下一轮循环,后续的print()语句不会执行
continue
print(n)
# []是有序可变集合,()既可以是函数,计算的括号,也可以是tuple有序不可变集合,{}是字典dict类似于map
score = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
# 判断key是否存在的两种方法,in 判断是否存在 返回bool类型结果;通过get()方法取值,没有返回值就是不存在,或者自己指定默认值
print('deepiot' in score)
print(score.get('deepiot', -1))
# set类似于dict和集合的综合产物,只存key,不存value,且重复key自动过滤。可以做并集或者交集操作
s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
print(s1 & s2)
print(s1 | s2)
# s3 = set([1, 2, 3, [4, 5]])
# print(s3)
# s3 = {(1, 2, 3): 32, (1, 2, 4): 45}
# print(s3[(1,2,3)])
# s3 = {(1, 2, 3): 32, (1, 2, 4): (2, 2, 4)}
# print(s3[(1, 2, 4)])
# s3 = {(1, 2, 3): 32, (1, 2, 4): (2, [2, 4])}
# print(s3[(1, 2, 4)])
# key不能存放可变对象,所以tuple可以做key
s3 = {(1, [2, 3]): 32, (1, 2, 4): (2, [2, 4])}
print(s3[(1, [2, 3])])
# 切记Python的代码块是通过缩进来完成的,同一个语句块一定要在同一个缩进级别,且大括号用:代替,别忘写冒号
print('切记Python的代码块是通过缩进来完成的,同一个语句块一定要在同一个缩进级别,且大括号用:代替,别忘写冒号')