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 ...
随机推荐
- height属性
高度属性: height:长度值|百分比|auto 最大高度:max-height 最小高度:min-height 说明:设置块级元素和替换元素的内容高度.
- Layer弹出层销毁问题
Layer弹出层销毁问题 最近开发时有个问题记录一下 点击按钮显示相应的图表信息,当时自己点感觉没问题,谁知到测试手里多次点击就会有后续打开的窗口无法渲染问题,看了半天才发现是调用layer.clos ...
- Python 特殊方法
1 _int_ 定义在类中,创建类的实例的时候回先调用此方法,用于对该类的一些初始化(例如变量初始化) 2 _str_ def _str_(self): return "this is a ...
- 【简书】在阿里云自带的CentOS + LAMP环境下部署一个Laravel项目
在阿里云自带的CentOS + LAMP环境下部署一个Laravel项目 作者 DonnieZero 关注 2017.07.29 22:02* 字数 2218 阅读 5556评论 3喜欢 1赞赏 1 ...
- BLE和2.4G实现通信
1. 背景 客户的项目是无线控制灯具,目前采用2.4G芯片,一端是2.4G遥控器,一端是2.4G灯具.现在客户的需求是在不增加成本的条件下增加手机APP控制.因为BLE芯片一般会比纯2.4G芯片价格高 ...
- 全志A33开发板的安卓控制LED-2-JNI基础
虽然您可以完全使用Java编写应用程序,但有些情况下Java本身并不能满足您的应用程序的需求.当应用程序不能完全用Java编写时,程序员使用JNI编写Java本机方法来处理这些情况. 以下示例说明何时 ...
- Fiddler2如何对Android应用进行抓包
Fiddler2抓包工具的下载和使用 2018-04-22 18:06:37 0 0 0 Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个h ...
- css格式
<head> <style>body {color:#000000;font-weight:normal;} .c1{ color: #fff; background-colo ...
- 1--STM32 ADC1与ADC2 16通道DMA采集笔记(原创)
最近在搞ADC,网上还是很多资源的,以下为参考链接:1.对STM32 ADC单次转换模式 连续转换模式 扫描模式的理解:https://www.cnblogs.com/zhanghankui/p/51 ...
- MongoDB解压报错gzip: stdin: not in gzip format的解决方法
MongoDB解压报错gzip: stdin: not in gzip format的解决方法 在安装MongoDB时出现如下报错: [root@vm172--- mongodb]# tar -zxv ...