Python课程第一天作业
一、第一题:简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型?
计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:
编译
解释
由此高级语言也分为编译型语言和解释型语言。

1.编译型语言
使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
特点
在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。
总结
1.一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;
2.与特定平台相关,一般无法移植到其他平台;
3.现有的C、C++、Objective等都属于编译型语言。

2.解释型语言
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。
特点
解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。
总结
1.解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低;
2.只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;
3.PHP/Java/JavaScript/Python/Perl/Ruby等属于解释型语言。
二、执行 Python 脚本的两种方式是什么
运行Python有两种方式--解析器运行和源文件运行。
1.解析器运行
在命令行输入python就能启动解析器,我们安装下面的方式输入就马上能得到打印信息
Windows环境下:

Linux环境下:

2.使用源文件运行
写一个简单的Python脚本,并执行

三、Python单行注释和多行注释分别用什么?
python单行注释符号(#)
井号(#)常被用作单行注释符号,在代码中使用#时,它右边的任何数据都会被忽略,当做是注释。
print #输出1
#号右边的内容在执行的时候是不会被输出的。
批量、多行注释符号
在python中也会有注释有很多行的时候,这种情况下就需要批量多行注释符了。多行注释是用三单引号''' '''或三双引号""" """包含的,二者并没有什么区别
四、布尔值分别有什么?
一个True一个False。
python中以下类型的布尔值是False,其余为True
.None
. False
.所有的值为零的数
.""
.[]
.()
.{}
五、声明变量注意事项有那些?
().变量由数字、字母和下划线组成
().变量不能以数字开头
().变量不能使用Python关键字
().变量区分大小写
模块名,包名 :小写字母, 单词之间用_分割。
类名:首字母大写。
全局变量: 大写字母, 单词之间用_分割。
普通变量: 小写字母, 单词之间用_分割。
函数: 小写字母, 单词之间用_分割。
实例变量: 以_开头,其他和普通变量一样 。
私有实例变量(外部访问会报错): 以__开头(2个下划线),其他和普通变量一样 。
专有变量: __开头,__结尾,一般为python的自有变量(不要以这种变量命名)。
六、如何查看变量在内存中的地址?
id(变量名)查看

七、写代码(实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
import time
user_lsit=['seven','alex']
passwd='123'
count = 0
while count < 3:
count += 1
login_user=input('请输入您的用户名:')
login_passwd=input('请输入您的密码:')
#login_passwd=getpass.getpass('密码:') #Paycharm下无法使用getpass方法
if (login_user in user_lsit) and login_passwd == passwd:
print('登录成功')
break
else:
if count == 3:
print('失败次数过多,程序退出.....')
time.sleep(1)
exit(1)
else:
print('登录失败,请重新输入!')
八、写代码(使用while循环实现输出2-3+4-5+6...+100 的和、1-100 内的所有奇数及1-100 内的所有偶数)
#!/usr/bin/env python
# -*- coding: utf-8 -*- #计算指定数字之间的总和,默认为1至100
def calculate_the_sum_of_numbers(init_number=2,max_number=100):
if judgement_size(init_number,max_number) == 0:
return 0
judgement_size(init_number, max_number)
starting_value=init_number
sum_of_number=0
while init_number != (max_number + 1):
sum_of_number=(sum_of_number + init_number)
init_number += 1
print('%d 至 %d 的数字之和为:%d' %(starting_value,max_number,sum_of_number)) #打印指定数字之间的奇数和偶数,默认为1至100
def print_odd_even_number(init_number=1,max_number=100):
if judgement_size(init_number,max_number) == 0:
return 0
odd_lsit=[]
even_lsit=[]
starting_value = init_number
while init_number != (max_number + 1):
if (init_number%2) == 1:
odd_lsit.append(init_number)
init_number += 1
else:
even_lsit.append(init_number)
init_number += 1
print('%d 至 %d 的数字之间的奇数为: %s' %(starting_value,max_number,odd_lsit))
print('%d 至 %d 的数字之间的偶数为: %s' %(starting_value,max_number,even_lsit)) #判断起始值和结束值得大小
def judgement_size(num1,num2):
max_num=max(num1,num2)
if max_num != num2:
print('最大值必须必起始值大!')
return 0 calculate_the_sum_of_numbers()
print_odd_even_number()
九、用户登录(多用户、失败3次被锁、、支持新建)
流程图:

代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
white_user_set=[]
black_user_set=[]
user_list=[]
white_userDB='white_userDB'
black_userDB='black_userDB' with open(black_userDB, 'r+') as black_f:
for black_user in black_f.readlines():
black_user = black_user.strip("\n")
black_user_set.append(black_user) with open(white_userDB, 'r+') as white_f:
for file in white_f.readlines():
file = file.strip("\n")
user,passwd= file.split(':')
white_user_set.append({'name':user,'passwd':passwd})
user_list.append(user) def user_register():
count=0
while True:
count+=1
register_name = input('创建用户名:')
register_passwd = input('创建密码:')
register_passwd1 = input('创建密码:')
if register_passwd == register_passwd1:
if register_name in user_list:
print('用户已存在,请重新创建')
else:
user_information=register_name+':'+register_passwd
print(user_information)
print(type(user_information))
with open(white_userDB,'a+') as f:
f.write('\n')
f.write(user_information)
print('恭喜您,用户创建成功!!!')
return 0
else:
if count == 3:
print('失败次数超过上限,程序退出')
exit(3)
print('两次密码不一致,请重新创建2') def user_login():
Flag = True
user_failures = 0
all_failures = 0
while Flag:
login_name = input('请输入用户名:')
login_passwd = input('输入密码:')
print(login_name,login_passwd)
if login_name in black_user_set:
print('该用户已被锁定,请联系您的管理员!')
exit(3)
if login_name in user_list:
for subscript,line in enumerate(white_user_set):
if (login_name == line['name']) and (login_passwd == line['passwd']):
print('登录成功')
print('正在登录。请稍后')
time.sleep(1)
print('')
print('='*30)
print('欢迎来到 250 世界')
print('='*30)
Flag = False
break
for subscript,line in enumerate(white_user_set):
if (login_name == line['name']) and (login_passwd != line['passwd']):
user_failures += 1
all_failures += 1
if (user_failures == 3):
print('验证失败次数过多,用户被锁定')
with open(black_userDB,'a+') as f:
f.write(login_name+'\n')
exit(2)
print('用户名或密码不正确,登录失败,请重新登录 2 ')
break
else:
print('用户名或密码不正确,登录失败,请重新登录 3 ')
all_failures += 1
if all_failures == 6:
print('失败次数过多,请确认后再登录 4')
exit(1) def main():
while True:
count=0
print('1 注册用户:')
print('2 登录系统:')
user_operation=input('请选择您的操作:')
print(type(user_operation))
if user_operation == '1':
user_register()
break
elif user_operation == '2':
user_login()
break
else:
count+=1
if count == 3:
print('失败次数过多,请确认后再登录')
exit(3)
print('非法的输入,请重试') if __name__ == '__main__':
main()
Python课程第一天作业的更多相关文章
- python课程第一天作业1-模拟登录
第一周作业: 作业1:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 流程图: 代码:后来修改过一次: #!/usr/bin/env python # -*-conding:ut ...
- python入门第一天作业。讲师写的代码。
#!/uer/bin/env python # _*_ coding: utf-8 _*_ import sys retry_limit = 3 retry_count = 0 account_fil ...
- Python课程第八天作业
第一题: 1.自定义一个 Fruit 类:该类有一个 类属性: identify:值为"水果",有两个对象属性: name,price:值由实例化对象时赋值,一个类方法: get_ ...
- python课程第一天笔记-la
http://www.cnblogs.com/onda/ ----------------------20170423 一:Cpython pypy 区别 等;Cpython 是一行一行解释, ...
- Python课程第二天作业
一.统计字符串格式 要求: # 1.统计元组中所有数据属于字符串的个数,提示: isinstance() # 数据: t1 = (1, 2, '3', '4', 5, '6') # 结果: 3 代码 ...
- python课程第一周重点记录
- BUAA OO 2019 第一单元作业总结
目录 总 架构 Controller Model 输入处理 代码静态分析 行数 方法复杂度 UML 类图 优点 缺点 坑 输入 非法的空白字符 输入的简并处理 运算 浅拷贝 可变类型与不可变类型 ...
- 初学者的python学习笔记1——作业篇
既然是学习,作业必不可少,其实在看后面讲思路之前还是感觉自己写的不错,但是和后面一对比,感觉实在是想的太片面太肤浅了,还需要太多太多改进的地方. 首先放一下作业要求. 最开始做的时候真的是完全按照字面 ...
- python课程第二周重点记录
python课程第二周重点记录 1.元组的元素不可被修改,元组的元素的元素可以被修改(字典在元组中,字典的值可以被修改) 2.个人感觉方便做加密解密 3.一些方法的使用 sb = "name ...
随机推荐
- office2013 Word 缺少校对工具,按提示下载、安装了文件还是不成功的解决方案
找到你的office安装源iso镜像加载 ——点开镜像双击setup.exe ——选择添加或删除功能 ——下一步——其他的不要动,展开office共享功能项 ——找到校对工具点出下拉项(点朝下的黑色箭 ...
- 关于OSI
OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model ...
- BarCodeUtile
package com.rscode.credits.util; import java.awt.image.BufferedImage; import java.io.ByteArrayOutput ...
- POJ1064 Cable master(二分 浮点误差)
题目链接:传送门 题目大意: 给出n根长度为1-1e5的电线,想要从中切割出k段等长的部分(不可拼接),问这个k段等长的电线最长可以是多长(保留两位小数向下取整). 思路: 很裸的题意,二分答案即可. ...
- UEditor之实现配置简单的图片上传示例 转
http://blog.csdn.net/huangwenyi1010/article/details/51637427 + http://blog.csdn.net/cr135810/article ...
- jQuery基础之一
jQuery基础之一 初识jQuery jQuery封装JavaScript中多个好用的函数成为并形成代码库,操作时也更符合我们的习惯,并且减少了浏览器之间的兼容性. jQuery官网 引入 本地 ...
- [Java Web学习]JDBC事务处理
1. Spring中加入数据库的bean <bean id="dataSource" class="org.apache.commons.dbcp.BasicDat ...
- ZJOI2018 D1T2 历史(毕竟我菜,所以题解十分易懂。。)
我定睛一看,上一篇博客居然是去年省选写的...emmm我果然很懒.. 又是一年省选季,临死前订正一下去年的题吧.. 作为第一天30pts的滚粗选手,我去年并没有怎么思考这题.. 题意概括好麻烦,来来来 ...
- P2568 莫比乌斯反演+整除分块
#include<bits/stdc++.h> #define LL long long using namespace std; ; bool vis[maxn]; int prime[ ...
- c++中thread的死法
在调用thread后,不调用join()函数时, 线程的两种行为:1)自己管理join()函数 2)生成后不管理,线程完了自己杀死自己detach()函数.使用detach()时,线程比较简单,一般 ...