python—基础练习1
1. 简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型
答:首先,编译型与解释型语言都属于高级语言。高级语言需要转换成二进制,然后CPU运行,所以两者是根据转换二进制方式的不同而进行区分的。
编译型(翻译类):把我能读懂的代码编译(翻译)成机器能读懂的代码,然后让CPU运行。所以依赖编译器,写错的话需要重新编译运行,开发效率低。例如c c++ Delphi Go等等
解释型:通过解释器把源代码边解释成机器指令,边让CPU运行。所以要有解释器,系统要支持python(windows需要安装,Linus,mac默认自带),写错了直接改源码再翻译,不需要先翻译成二进制,开发效率高。例如python Java PHP
•执行效率: 编译型:翻译成了计算机直接能理解的语言后直接运行,所以执行效率高。
解释型:所有代码需要边执行边运行,不能生成二进制代码,运行效率低。
•跨平台性(Windows,Linus,): 编译型:通过操作系统运行我的源代码,就是说在不同的操作系统上调用不同的指令。跨平台性差
解释型:最大的特点就是跨平台,解释器做好了对不同平台的交互处理,一份源代码,所有平台可直接执行。
2. 执行 Python 脚本(script)的两种方式是什么
答:方法一:(内存操作)在windows命令行窗口键入python(事先你须安装好python,并配置好path),运行效果:
→
方法二:(硬盘操作)安装好Python后,它会自带一个IDLE编辑器,或者下载一个编辑器pycharm......
3. Pyhton 单行注释和多行注释分别用什么
答:一、python单行注释符号(#):#号右边的内容在执行的时候是不会被输出的
二、批量、多行注释符号:多行注释是用三引号''' '''包含,例如:
4.布尔值(bool)分别有什么
答:True 和Flase
5.声明变量注意事项有那些
答:声明变量:先赋值
下划线为官方命名方式。
6.如何查看变量在内存中的地址
答:id
(变量名)
#查看内存地址 , print(id(变量名))
7. 写代码
i. 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!
user_name=input('user_name:') passwd=int(input('passwd:')) if user_name=='seven' and passwd==123: print('登陆成功') else: print('登陆失败')
i. 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
count=0 while count<3: user_name = input('user_name:') passwd = int(input('passwd:')) if user_name=='seven' and passwd==123: print('登陆成功') break else: print('登陆失败') count+=1
iii. 实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
count=0 while count<3: user_name = input('user_name:') passwd = int(input('passwd:')) if user_name=='seven' or user_name=='alex' and passwd==123: print('登陆成功') break else: print('登陆失败') count+=1
8.写代码
a. 使用while循环实现输出2-3+4-5+6...+100 的和
i=2 count1=0 count2=0 while i<=100: if i%2==0: count1+=i else: count2+=-i i+=1 count=count1+count2 print(count)
i=2 h=0 while i <= 100: if i%2 == 0: h+=i elif i%2 == 1: h-=i i+=1 print(h)
print(sum(map(lambda x: x * -1 if x % 2 == 0 else x, [x for x in range(100) if x != 88])))
b. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12
i=1 while i<=12: if i != 6 and i != 10: print(i) i+=1
c. 使用while 循环输出100-50,从大到小,如100,99,98...,到50时再从0循环输出到50,然后结束
count=100 while count>=50: print(count) count-=1 if count==50: count=1 while count<=50: print(count) count+=1 break
d. 使用 while 循环实现输出 1-100 内的所有奇数
i=1 while i<=100: print(i) i+=2
i=1 while i<=100: if i%2==1: print(i) i+=2
e. 使用 while 循环实现输出 1-100 内的所有偶数
i=2 while i<=100: print(i) i+=2
i=1 while i<=100: if i%2==0: print(i) i+=1
f.分别用while和for range 循环实现输出1-2+3...-99的结果
i=1 h=0 while i<=99: if i%2==0: h+=i elif i%2==1: h-=i i+=1 print(h)
h = 0 for i in range(100): if i % 2 == 0: h += i if i % 2 == 1: h -= i print(h)
g.求1-100所有偶数的和
sum=0 for x in range(1,101): if x % 2==0: print(x) sum=sum+x print("累加和是:",sum)
9.现有如下两个变量,请简述 n1 和 n2 是什么关系?
n1 = 123456
n2 = n1
答:使用同一内存地址,只是变量名不同
10.制作趣味模板程序(编程题)
需求:等待用户输入名字、地点、爱好,根据用户的名字和爱好进行任意显示
如:敬爱可爱的xxx,最喜欢在xxx地方干xxx
name=input('Name:') address=input('Address:') hobby=input('Hobby:') print('敬爱可爱的%s,最喜欢在%s地方干%s' % (name,address,hobby))
11. 输入一年份,判断该年份是否是闰年并输出结果。(编程题)
注:凡符合下面两个条件之一的年份是闰年。 (1) 能被4整除但不能被100整除。 (2) 能被400整除。
year=int(input('Year:')) if year%4==0 or year%400==0 and year%100!=0: print('你猜的是闰年') else: print('你猜错了')
12.假设一年期定期利率为3.25%,计算一下需要过多少年,一万元的一年定期存款连本带息能翻番?(编程题)
持有=10000年=0
利率=0.0325 while 持有<20000: 年+=1 持有=持有*(1+利率) print('%s年以后,存款会翻番'%year)
13.编写登陆接口
基础需求:
- 让用户输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后退出程序
升级需求:
- 可以支持多个用户登录 (提示,通过列表存多个账户信息)
- 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
一. 基础需求
user_name='alex' passwd=123 count=0 while count<3: n1=input('请输入你的用户名:') n2= int(input('请输入你的密码:')) if n1==user_name and n2==passwd: print('Welocome '.center(20,'-')) break else: if n1==user_name and n2!=passwd: print('你的密码错误') elif n1!=user_name and n2==passwd: print('你的用户名错误') else: print('你的用户名和密码都错误') count+=1 if count==1: print('您还有两次机会') elif count==2: print('您还有一次机会') elif count==3: print('你的认证登陆失败'.center(20,'-'))
二. 升级需求
user_info = { 'alex': '123', 'shanshan': '456', 'longting': '789' } f = open('D:\lock_user\sa.txt', 'r', encoding='utf-8') lock_users = f.readlines() exit_flag = False count = 0 def put(): global exit_flag # 声明全局变量 exit_flag = True while count < 3: user_name = input('输入你的用户名:') password = input('输入你的密码:') if user_name in user_info and user_name not in lock_users: if password == user_info[user_name]: print('登陆成功'.center(30, '*')) put() break else: print('你的密码错误'.center(30, '*')) count += 1 if count < 3: print('你还有%s次登陆机会' % (3-count)) elif count == 3: print('你的认证登陆失败,账号已被锁定'.center(20, '*')) f = open('D:\lock_user\sa.txt', 'w', encoding='utf-8') f.write(user_name) f.close() put() break elif user_name in lock_users: print('对不起,你的用户已被锁定!') put() break else: print('用户名不存在!') put()
14.猜年龄
练习1:猜年龄游戏
要求:
- 允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出
练习2:猜年龄游戏升级版
要求:
- 允许用户最多尝试3次
- 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序
- 如何猜对了,就直接退出
count=0 age=22 while count<3: guess=int(input("你猜的年龄是:")) if guess==age: print('--------恭喜你猜对了----------') break elif guess>age: print('猜大了') else : print('猜小了') count+=1
count=0 age=22 while count<3: guess=int(input("你猜的年龄是:")) if guess==age: print('--------恭喜你猜对了----------') break elif guess>age: print('猜大了') else : print('猜小了') count+=1 if count==3: print('-------游戏结束,你是否还想玩儿-------') print('输入Y/y,继续玩儿游戏, 输入N/n则退出') choice=input('请选择:') if choice=='Y' or choice=='y': count=0 elif choice=='N' or choice=='n': print('你将退出游戏')