Python开发Day1之输出输出与流程控制
一、输入/输出
控制台
文件
二、注释
行注释:井号#
段注释:三引号''''''
三、变量与赋值
Python 中变量名规则与其它大多数高级语言一样, 都是受C 语言影响(或者说这门语言
本身就是C 语言写成的)。变量名仅仅是一些字母开头的标识符--所谓字母开头--意指大
写或小写字母,另外还包括下划线( _ ). 其它的字符可以是数字,字母, 或下划线。Python
变量名是大小写敏感的, 也就是说变量 "cAsE" 与 "CaSe" 是两个不同的变量。
- 变量名只能是字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字(why?1e2表示指数还是变量?)
- python关键字不能声明为变量名
四、运算符
1、算数运算
2、比较运算

3、赋值运算
4、逻辑运算

5、成员运算

6、身份运算

7、位运算

8、运算优先级

9、三目运算符
a if a<b else b
五、条件与循环
-
if
if_suite
if expression: -
if-else
if_suite
if expression:
else:
else_suite -
if-elif-else
if_suite
if expression1:
elif expression2:
elif_suite
else:
else_suite -
for
for item in iterable:
suite -
while
while expression:
while_suite -
break
Python 中的 break 语句可以结束当前循环然后跳转到下条语句, 类似 C 中的传统 break .常用在当某个外部条件被触发(一般通过 if 语句检查), 需要立即从循环中退出时. break 语句可以用在 while 和 for 循环中
-
continue
当遇到continue 语句时, 程序会终止当前循环,并忽略剩余的语句, 然后回到循环的顶端. 在开始下一次迭代前,如果是条件循环, 我们将验证条件表达式.如果是迭代循环,我们将验证是否还有元素可以迭代. 只有在验证成功的情况下, 我们才会开始下一次迭代.它可以被用在 while 和 for 循环里.
六、pyc、pyo
1、编译型语言与解释型语言
计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。
编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。
解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。
优缺点:编译性语言效率高(少了翻译的过程),依赖于操作系统,解释性语言可以跨平台,但是效率较低,但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言
此外,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。
用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。Python也是也是一门基于虚拟机的语言,是一门先编译后解释的语言。
2、pyc与pyo
pyc文件,是Python编译后的字节码(bytecode)文件。只要你运行了py文件,python编译器就会自动生成一个对应的pyc字节码文件。这个pyc字节码文件,经过python解释器,会生成机器码运行(这也是为什么pyc文件可以跨平台部署,类似于java的跨平台,java中JVM运行的字节码文件)。下次调用直接调用pyc,而不调用py文件。直到你这个py文件有改变。python解释器会检查pyc文件中的生成时间,对比py文件的修改时间,如果py更新,那么就生成新的pyc。
pyo文件,是python编译优化后的字节码文件。pyo文件在大小上,一般小于等于pyc文件。如果想得到某个py文件的pyo文件,可以这样:
python -O -m py_compile xxxx.py
python文档是这样描述的:这个优化没有多大作用,只是移除了断言。原文如下:
When the Python interpreter is invoked with the -O flag, optimized code is generated and stored in .pyo files. The optimizer currently doesn’t help much; it only removes assert statements. When -O is used, all bytecode is optimized; .pyc files are ignored and .py files are compiled to optimized bytecode.
至于速度,运行几乎一样,加载pyc和pyo稍占优势。python文档是这样说的:
A program doesn’t run any faster when it is read from a .pyc or .pyo file than when it is read from a .py file; the only thing that’s faster about .pyc or .pyo files is the speed with which they are loaded.
作业一:编写登陆接口
1、输入用户名密码
2、认证成功后显示欢迎信息
3、输错三次后锁定
#!/usr/bin/env python # -*- coding:utf-8 -*- import getpass user = 'wuyy' passwd = 'admin@123' with open('record.txt', 'r') as f: count = f.read() for i in range(10): if count == '3': print("用户名或密码输入错误次数过多,用户已锁定") break if i < 3 : username = input("请输入用户名:") password = input("请输入密码:") if user == username and passwd == password: print("welcome") break else: print("请输出正确的用户名和密码") else : print("用户名或密码输入错误次数过多,用户已锁定") with open('record.txt', 'w') as f: f.write('3') break
作业二:多级菜单
1、三级菜单
2、可依次选择进入各子菜单
3、所需新知识点:列表、字典
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:wuyy menu = { "anhui":{ "hefei":["shushan","zhengwu"], "anqing":["zongyang","huaining"] }, "jiangsu":{ "nanjing":["gulou", "qixia"], "zhenjiang":["runzhou", "dagang"] } } p = {} c = {} msg = "省份列表" print(msg.center(20, "*")) #print(menu) for k in enumerate(menu): p_index = k[0] p_name = k[1] print(p_index, p_name) p[p_index] = p_name p_choice = input("请输入选择的省份:") if p_choice.isdigit(): p_choice = int(p_choice) if p_choice in p : for k2 in enumerate(menu.get(p.get(p_choice))): c_index = k2[0] c_name = k2[1] print(c_index, c_name) c[c_index] = c_name c_choice = input("请输入选择的城市:") if c_choice.isdigit(): if c_choice in c : for k in menu.get(p.get(p_choice)).get(c.get(c_choice)): print(menu.get(p.get(p_choice)).get(c.get(c_choice)).index(k), k) else: print("请输入正确序号") exit() elif c_choice == 'q' or c_choice == 'Q': print("已退出") exit() else: print("请输入正确序号") exit() else: print("请输入正确序号") exit() elif p_choice == 'q' or p_choice == 'Q': print("已退出") exit() else: print("请输入正确序号") exit()

浙公网安备 33010602011771号