Python编程语言(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/)是一种广泛使用的解释型、高级编程、通用型编程语言。Python支持多种编程范式,包括面向对象、结构化、指令式、函数式和反射式编程。它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个巨大而广泛的标准库。
Python由来:
Python语言是由Guido van Rossum创造,第一版发布于1991年,命名取自BBC节目Monty Python’s Flying Circus。
Python特色:
简单、易学、免费开源、高级语言、解释性(和编译性相对)自由开放、跨平台、可嵌入、丰富的库
应用方向
美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
当存在多种可能,不要尝试去猜测而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
Python语言利用缩进表示语句块的开始和结束,而非使用大括号或者某种关键字。增加缩进表示语句块的开始,而减少缩进则表示语句块的结束。根据PEP 8的规定,使用4个空格来表示每级缩进。
缩进成为了语法的一部分,并且Python开发者有意让违反了“缩进规则”的程序不能通过解释。
单行注释:#符号右侧的任何代码
多行注释:一对三引号(’’'或""")之间包括的代码
由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合
表达式特点
一个语法上自成体系的单位,它由一个词或句法上有关连的一组词构成
语句的执行一般会对程序产生一定的影响,在交互模式中不一定会输出语句的执行结果
程序是由一条一条的语句和一条一条的表达式构成的
函数就是一种语句,函数专门用来完成特定的功能
函数长的形如:xxx()
函数的分类:
函数的2个要素
Python有如下35个关键字(保留字),它们不能用作标识符
False | await | else | import | pass |
None | break | except | in | raise |
True | class | finally | is | return |
and | continue | for | lambda | try |
as | def | from | nonlocal | while |
assert | del | global | not | with |
async | elif | if | or | yield |
标识符就是名字,在ASCII范围内(U+0001…U+007F),可用于标识符的字符为:大写字母A
至Z
和小写字母a
至z
,下划线_
以及数字0
至9
,但首字不可以用数字。
命名方式
命名约定:
_spam
(单下划线开头):弱“内部使用”标识。对于from M import *
,将不导入所有以下划线开头的对象spam_
(单下划线结尾):为了避免与python关键字的命名冲突__spam
(双下划线开头):在命名一个类特性的时候,采用名字修饰,比如在类SpamEggs
内,__spam
将变成_SpamEggs__spam
__spam__
(双下划线开头双下划线结尾):指那些包含在用户控制的名字空间中的“魔术”对象或特性,比如__name__
、__doc__
、__init__
、__import__
、__file__
等。建议永远不要将这样的命名方式应用于自己的变量或函数2020/11/16
注:用了部分后续会详细介绍的学习内容
第一题
a,b = 6, 8 我想让a=8 b=6我该怎么办?用2种方式实现
a,b = 6, 8
a,b = b,a
print('a=%d b=%d'%(a,b))
# print('a={} b={}'.format(a,b))
a,b = 6, 8
print('a=%d b=%d'%(b,a))
# print('a={1} b={0}'.format(a,b))
a,b = 6, 8
temp = a
a = b
b = temp
print('a=%d b=%d'%(a,b))
第二题
完成字符串的逆序以及统计
设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入
打印出字符串长度
使用切片逆序打印出字符串
str = input('请输入:')
if not len(str) < 31:
print('长度不低于31,请重新输入')
else:
print(f'{str}长度为{len(str)}')
print('{}的逆序字符串为{}'.format(str,str[::-1]))
123,hello world!长度为16
123,hello world!的逆序字符串为!dlrow olleh,321
第三题
要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
用户名长度6-20,用户名必须以字母开头
密码长度至少6位,不能为纯数字,不能有空格
注:这里先不采用字符串的isdigit\isalpha\isspace方式
while True:
username = input('请输入用户名:')
if not 6 <= len(username) <= 20:
print(username+'用户名长度必须为6-20')
continue
if not ('a'<=username[0]<='z' or 'A'<=username[0]<='Z'):
print(username+'用户名必须以字母开头')
continue
else:
print('用户名设置成功!'+username)
break
while True:
password = input('请输入密码:')
if len(password) < 6:
print(password+'密码至少为6位')
continue
for i in range(len(password)):
if '0' <= password[i] <= '9' and i == len(password)-1:
print(password+'密码不能为纯数字')
break
if password[i] == ' ':
print(password+'密码不能带有空格')
break
continue
else:
print(f'设置成功!用户:{username},密码:{password}')
break
a1234用户名长度必须为6-20
123456用户名必须以字母开头
用户名设置成功!a12345
a1234密码至少为6位
123456密码不能为纯数字
1234 5密码不能带有空格
设置成功!用户:a12345,密码:12345a