一、第一题:简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型?

计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:
  1. 编译

  2. 解释

由此高级语言也分为编译型语言解释型语言

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课程第一天作业的更多相关文章

  1. python课程第一天作业1-模拟登录

    第一周作业: 作业1:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 流程图: 代码:后来修改过一次: #!/usr/bin/env python # -*-conding:ut ...

  2. python入门第一天作业。讲师写的代码。

    #!/uer/bin/env python # _*_ coding: utf-8 _*_ import sys retry_limit = 3 retry_count = 0 account_fil ...

  3. Python课程第八天作业

    第一题: 1.自定义一个 Fruit 类:该类有一个 类属性: identify:值为"水果",有两个对象属性: name,price:值由实例化对象时赋值,一个类方法: get_ ...

  4. python课程第一天笔记-la

    http://www.cnblogs.com/onda/   ----------------------20170423 一:Cpython  pypy 区别 等;Cpython 是一行一行解释, ...

  5. Python课程第二天作业

     一.统计字符串格式 要求: # 1.统计元组中所有数据属于字符串的个数,提示: isinstance() # 数据: t1 = (1, 2, '3', '4', 5, '6') # 结果: 3 代码 ...

  6. python课程第一周重点记录

  7. BUAA OO 2019 第一单元作业总结

    目录 总 架构 Controller​ Model​ 输入处理 代码静态分析 行数 方法复杂度 UML​ 类图 优点 缺点 坑 输入 非法的空白字符 输入的简并处理 运算 浅拷贝 可变类型与不可变类型 ...

  8. 初学者的python学习笔记1——作业篇

    既然是学习,作业必不可少,其实在看后面讲思路之前还是感觉自己写的不错,但是和后面一对比,感觉实在是想的太片面太肤浅了,还需要太多太多改进的地方. 首先放一下作业要求. 最开始做的时候真的是完全按照字面 ...

  9. python课程第二周重点记录

    python课程第二周重点记录 1.元组的元素不可被修改,元组的元素的元素可以被修改(字典在元组中,字典的值可以被修改) 2.个人感觉方便做加密解密 3.一些方法的使用 sb = "name ...

随机推荐

  1. mysql 数据库导出与导入

    1.数据库导出 语句:mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 1.导出整个数据库结构和数据 mysqldump -h localhost -uroot -p ...

  2. OnApplicationFocus & OnApplicationPause &时间戳

    锁屏.切到后台 程序强制暂停时使用 private long leaveTime; private void OnApplicationFocus(bool focus) { if (focus==f ...

  3. es6里面的arr方法

    es6里面,关于arr的遍历以及查找,新增了很多的方法,对于不同的应用场景,运用合适的方法,可以达到事半功倍的效果: 一, arr.find():用于查找到符合条件的第一个成员,如果没有查找到的话,则 ...

  4. 实验四 CC2530平台上UART组件的TinyOS编程

    实验四 CC2530平台上UART组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530的UART.及其TinyOS编程方法 学生通过本实验 ...

  5. javascript获取某个月份的天数

    function DayNumOfMonth(Year,Month)      //例DayNumOfMonth(2017,05);{ Month--;   //月份是0~11.month=4 var ...

  6. JavaWeb(二)

    三.搭建JavaWeb应用开发环境——Tomcat服务器 3.1.疑问:学习web开发,为什么必须要先装一个WEB服务器? 在本地计算机上随便创建一个web页面,用户是无法访问到的,但是如果启动tom ...

  7. 【开发】iOS入门 - XCode快捷键

    XCode使用第一天,从熟悉快捷键开始... 搜索相关的快捷键: 搜文件.类和方法 - Command + Shift + O 搜字符串 - Command + Shift + F 定位文件 - Co ...

  8. 最新版SEMCMS_PHP_3.5 过滤不严导致sql注入

    一.漏洞分析 在分析过程中看到网上已经有人发现semcms V2.4存在过滤不严导致sql注入的漏洞,不知道咋还没改,而且最新版过滤的关键字更少了. 首先查看首页文件index.php的代码 < ...

  9. Vue通过路由 query传递参数

    父组件通过query来传递num参数为1,相当与在 url 地址后面拼接参数 <template> <div> <h3>首页</h3> <rout ...

  10. java_oop_三大特性

    继承    概念    优点    语法    使用        有些父类成员不能被继承        private成员变量和方法        子类与父类不在同包,使用默认访问权限的成员     ...