用户登6程序晋级版,习题作业day贰

By admin in 4858.com on 2019年4月16日

1.Python 2.x  3.x 
区别 

一、剖断下列逻辑语句的True,False.

编制登录接口

Python基础-月考,python基础

  1. 8<<2等于?

    一 # 32 2 # 解释:将八按位左移3个人 三 # 8 0 0 0 0 1 0 0 0
    四 # 3二 0 0 壹 0 0 0 0 0

  2. 因此嵌入函数总结五除以二的余数

    1 print(divmod(5, 2))
    2
    3 #(2, 1) 2 = 5 // 2; 1 = 5 % 2

3.
s=[1,”h”,2,”e”,[1,2,3],”l”,(4,5),”l”,{1:”111″},”o”],将s中的七个字符提抽取来并拼接成字符串

1 s = [1, "h", 2, "e", [1, 2, 3], "l", (4, 5), "l", {1: "111"}, "o"]
2 s_g = filter(lambda x: type(x) is str, s)   #由于int类型非可迭代对象,先使用filter过滤掉
3 s_new = ''  #拼接字符串变量
4 for i in s_g:
5     s_new += i
6 print(s_new)

4.
判断”yuan”是否在[123,(1,”yuan”),{“yuan”:”handsome”},”yuanhao”],如何判别以及对应结果?

1 l = [123, (1, "yuan"), {"yuan": "handsome"}, "yuanhao"]
2 l_yuan = str(l)     #将列表转换为字符串
3 if 'yuan' in l_yuan:
4     print('True')

5. 实施结果并表达为啥?

l=[1,2,3]

l2=l.insert(3,”hello”)

print(l2)

 

1 执行结果:None
2 解释:‘.insert’方法的返回值为‘None’

 

  1. 测算结果以及为什么?

a=[1,2,[3,”hello”],{“egon”:”aigan”}]

b=a[:]

 

a[0]=5

用户登6程序晋级版,习题作业day贰。a[2][0]=666

 

print(a)

print(b)

 1 a = [1,2,[3,"hello"],{"egon":"aigan"}]
 2 b = a[:]    #列表b和列表a相同
 3 
 4 a[0] = 5    #将列表a中的第一个元素‘1’变为‘5’
 5 a[2][0] = 666   #将列表a中的第3个元素‘[3,"hello"]’(同样为列表)的第1个元素变为‘666’
 6 
 7 print(a)    #打印更改后的列表a
 8 print(b)    #打印列表b,就是列表a更改前的元素
 9 
10 #执行结果:  [5, 2, [666, 'hello'], {'egon': 'aigan'}]
11 #          [1, 2, [666, 'hello'], {'egon': 'aigan'}]
  1. 行使文件读取,寻觅文件中最长的行的长度(用壹行代码化解)?

 

1 print(max([len(x) for x in open('test.py', encoding='utf-8')]))    

 

  1. 浅析结果

def add(s, x):

   return s + x

def generator():

   for i in range(4):

       yield i

base = generator()

for n in [1, 11]:

   base = (add(i, n) for i in base)

print(list(base))

 1 #结果:[22, 23, 24 ,25]
 2 #解释:
 3 #这个可以以管道的思路来理解,首先generator()函数是第一个生成器,下一个是第一次循环的base = (add(i, n) for i in base),
 4 # 最后一个生成器是第二次循环的base = (add(i, n) for i in base)。 这样就相当于三个管道依次连接,但是水(数据)还没有流过,
 5 # 现在到了list(base),就相当于驱动器,打开了水的开关,这时候,按照管道的顺序,由第一个产生一个数据,yield 0,
 6 # 然后第一个管道关闭。 之后传递给第二个管道就是第一次循环,此时执行了add(0, 11),然后水继续流,
 7 # 到第二次循环,再执行add(11, 11),此时到管道尾巴了,第一个数据22就产生了。此时第一个管道再开放yield 1, 
 8 # 流程跟上面的一样。依次产生23,24,25; 直到没有数据。 把代码改一下容易理解:
 9 
10 def generator():
11     for i in range(4):
12         yield i     #第1个管道
13 
14 base = (add(i, n) for i in base)    #第2个管道
15 base = (add(i, n) for i in base)    #第3个管道
16 
17 list(base)      #开关驱动器

参照:python迭代器与生成器小结

 

玖. 若是用py贰,py三下在cmd下运转会报错吗?为啥并建议消除方案? (编码)

test.py (gbk格局保留):

#coding:GBK

print(“老男孩”)

 4858.com 1

扩展,不过在python二.x解释器中,会显式乱码,python三.x下健康显式,是因为解释器自动帮我们解码了文件内容:

 4858.com 2

  1. 由此函数化编制程序达成5的阶乘

    壹 def fn(n):
    二 x = 1 三 if n == 0: #0的阶乘为1 4 x
    伍 else:
    陆 for i in range(1, n+壹):
    七 x *= i
    8 return x
    9
    10 print(fn(5))

  2. 打字与印刷如下图案:

          

     *

          ***

         *****

        *******

         *****

          ***

            *

 

 1 def print_star(n):    #n必须为奇数,此程序没有做判断
 2     s = '*'
 3     i = 1   #上部分,包含对称行
 4     j = n   #下部分
 5     while i < n and i % 2 != 0:
 6         print((s * i).center(n))
 7         i += 2
 8     while j > 0 and j % 2 != 0:
 9         print((s * j).center(n))
10         j -= 2
11 
12 print_star(7)

12

def outer():
  count = 10
  def inner():
    count = 20
    print(count)
    return count
  inner()
  print(count)

outer()

(一). 分析运营结果?

 

1 运行结果:20
2         10
3 分析:当调用函数outer时,按顺序读函数定义部分,outer函数内部嵌套定义了inner函数,
4 读完inner函数的定义,首先调用了inner(),此时inner函数局部变量count为20,故先打印了20,然后打印了outer函数内部变量10

 

 

 

(二).怎么着让多少个打字与印刷都以20

 

 1 #方法1:将inner函数内部的count变量删除,将outer函数下的count变量赋值为20即可
 2 def outer():
 3     count = 20
 4     def inner():
 5         print(count)
 6         return count
 7     inner()
 8     print(count)
 9 
10 outer()

 

1 #方法2:将inner函数内部变量count = 20返回给外部函数outer的变量count
2 def outer():
3     def inner():
4         count = 20
5         print(count)
6         return count
7     count = inner()
8     print(count)
9 outer()
  1. 输入1个年度,剖断是或不是是闰年?

    1 #闰年:四年壹润,百余年不润,四百余年再润
    贰 def leap_year(y):
    3 if y % 100 == 0:
    4 if y % 400 == 0:
    5 print(‘leap year’)
    6 else:
    7 print(‘not leap year’)
    8 elif y % 4 == 0:
    9 print(‘leap year’)
    10 else:
    11 print(‘not leap year’)
    12
    13 leap_year(2000)

  2. 自由输入五个数,决断大小?

    1 def max_three(x, y, z):
    2 return max(max(x, y),z)
    3
    4 print(max_three(1,2,3))

15.
求s=a+aa+aaa+aaaa+aa…a的值,在那之中a是贰个数字。例如贰+2二+222+222二+2222贰,多少个数相加以及a的值由键盘调整。

1 def sum_new(a, n):      #a代表求和的数字,n代表相加的次数
2     sum = 0
3     a = str(a)
4     for i in range(1, n+1):
5         x = int(a * i)
6         sum += x
7     return sum
8 
9 print(sum_new(2,3))
  1. 请问程序有无bug,怎么化解?

    1 f=open(“a”)
    2 while 一:
    三 choice=input(“是或不是出示:[Y/N]:”)
    4 if choice.upper()==”Y”:
    5 for i in f:
    6 print(i)
    7 else:
    8 break

    1 #有bug,
    二 # 壹,只要用户输入非‘y/Y’字符,程序都会终止,那与提醒音信不合乎
    三 # 二. ‘y/Y’只3回有效,即便用户想再一次翻开文件内容,必须得重启程序
    四 #消除格局:
    伍 f = open(“a”)
    6 while 一:
    柒 choice=input(“是不是出示:[Y/N]:”)
    八 if choice.upper() == “Y”:
    九 for i in f:
    10 print(i)
    1一 f.seek(0)  #重新设置文件地点于文首
    1二 elif choice.upper() == “N”:  #严峻供给用户必须输入‘n/N’方可退出程序
    一三 break

17.

1 def foo():
2     print('hello foo')
3     return()
4 def bar():
5     print('hello bar')

(壹).
为那几个基础函数加四个装饰器,试行对应函数内容后,将方今岁月写入三个文件做3个日志记录。

 1 def timer(func):
 2     def wrapper():
 3         import time
 4         res = func()
 5         f = open('log', 'a+')   #以追加的方式打开文件,没有则会创建
 6         s = time.asctime()      #获取当前时间:Tue Apr 18 21:46:18 2017
 7         f.write(s + '\n')       #将当前时间写入log文件,并换行
 8         f.close()               #关闭log文件
 9         return res
10     return wrapper
11 
12 @timer
13 def foo():
14     print('hello foo')
15     return ()
16 @timer
17 def bar():
18     print('hello bar')
19 
20 foo()
21 
22 bar()

(二).
改成参数装饰器,即可以根据调用时传的参数决定是或不是记录时间,比如@logger(True)

 1 def logger(choice):
 2     def timmer(func):
 3         def wrapper():
 4             import time
 5             if choice == True:
 6                 res = func()
 7                 f = open('log', 'a+')   #以追加的方式打开文件,没有则会创建
 8                 s = time.asctime()      #获取当前时间:Tue Apr 18 21:46:18 2017
 9                 f.write(s + '\n')       #将当前时间写入log文件,并换行
10                 f.close()               #关闭log文件
11                 return res
12             else:
13                 pass
14         return wrapper
15     return timmer
16 
17 @logger(True)
18 def foo():
19     print('hello foo')
20     return ()
21 @logger(True)
22 def bar():
23     print('hello bar')
24 
25 foo()
26 
27 bar()

 

  1. 2次登入锁定:必要三个用户名密码输入密码错误次数超越3次锁定?

    1 with open(‘account’,encoding=’utf8′) as f_account, open(‘lockedlist’, ‘a+’) as f_locked:
    2 l = [] #定义用户名验证列表,存放黑名单数据
    叁 f_locked.seek(0) #”a+”情势张开后,文件地方位于末尾,要遍历文件内容,供给将指针移至文件开首位置 四 for locked_info in f_locked.readlines(): #遍历黑名单
    伍 l.append(locked_info.strip()) #将黑名单数据增加进列表,注意:须要将文件中的换行符脱掉

    七 c = [] #定义用户登入名列表,存款和储蓄用户尝试的报到名
    捌 count = 壹 #登入次数计数器
    玖 flag = True #登录循环调整开关10 while flag and count < 四: 1壹 user = input('Please input username:') #输入用户名 12 pwd = input('Please input password:') #输入用户密码 一三 if user in l: #用户名在黑名单中 1四 print("This user is in blacklist,can't log in!") #打字与印刷提醒音信一5 continue 16 c.append(user) 壹七 for info in f_account: #用户名不在黑名单中,遍历用户登入文件 1八 user_name, user_pwd = info.strip().split(',') #将文件中的用户名和登录密码赋值给决断变量 19 if user == user_name: #用户名符合 20 if pwd == user_pwd: #对应密码符合 2壹 print('Welcome %s' % user) #打字与印刷登录成功信息2二 flag = False #登入成功,跳出登录程序 二三 break 二肆 count += 一 #对应密码不切合,while循环计数器加1 二5 break 二六 count += 1 #用户名不适合,while循环计数器加1 二七 break 2八 if count == ④: #倘若差异用户名密码输错三次,关闭程序 2玖 print('More than 三 times wrong!') #打字与印刷提示音信30 if len(c) == 叁 and c[0] == c[1] == c[2]: #要是同样用户名密码输错贰回,将该用户名参与黑名单,限制登入31 print('This user has been locked!') 32 f_locked.write(user+'\n') #将错误二次的用户名写入黑名单,注意,加换行符

 

1. 82等于? 1 # 32 2
# 解释:将八按位左移2位 3 # 8 0 0 0 0 1 0 0 0 4 # 32 0 0 1 0 0 0 0 0

  1. 经过放手函数计算伍除以2的余数…
  • 2.x本子绝对3.x –
    繁杂;原代码重复性较多;缺少规范性;然后龟叔受不了了,重新整建并正式Python,叁.x问世;
  • 二.x版本识别中文须求在首行评释:
    #-*4858.com ,-encoding: utf-8 -*- (2.x ASCLL  3.x默认Unicode)  
  • …未来补充

1)1 > 1 or 3 < 4 or 4 >
5 and 2 > 1 and 9 > 8 or 7 < 6

基本功必要:

二.变量:数字字母下划线组成,不过无法以数字初叶;约定俗成使用小写字母,命名需有可追溯性,切勿使用拼音;不能够选取Python的要紧词.

True

  • 让用户输入用户名密码
  • 表明成功后展现欢迎消息
  • 输错1遍后脱离程序

三.常量:参照变量,不过约定俗成:全大写字母;不可改变

2)not 2 > 1 and
3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 <

进级供给:

肆.证明单行 #  多行
”’  ”’

False

  • 能够支撑几个用户登入 (提醒,通过列表存三个账户新闻)
  • 用户三次验证战败后,退出程序,再次启航程序尝试登入时,依然锁定状态(提醒:需把用户锁定的情形存到文件里)

    1 users = [[‘ziv’, ‘666’], [‘alex’, ‘213’]]
    2 login_state = False
    三 # 设置用户登入状态为False的评释 四 count = 0
    5 username_count = [] # 用来总括用户登入次数
    陆 user_name = []
    7 lock_users = []
    8 f = open(‘lock_file.txt’, ‘r’, encoding=’utf-八’)
    玖 # 读取文件里已被锁定用户的新闻十 for i in f:
    11 lock_users.append(i.strip())
    12 while count < 3: 13 username = input('Username:').strip() 14 password = input('Password:').strip() 15 username_count.append(username) 16 # 将用户输入的用户名加多到计数列表 1七 if username in lock_users: 1八 exit('用户已被锁定') 1玖 for user_item in users: 20 if username == user_item[0] and password == user_item[一]: 二1 print('登入成功') 2二 login_state = True # 登入成功,login_state改为True 二三 break # 跳出for循环 2四 else: 25 print('用户名或密码错误') 二陆 # for 循环符合规律试行完(登伍分三功会被break,不会实践else,反之试行),再实践else 27 if login_state: 2捌 break # 用来跳出while循环 2玖 count += 1 30 else: 3一 print('错误次数过多') # 登入成功while被break,不会试行else,反之试行3二 for lock in username_count: 33 user_name.append(lock) 34 if user_name.count(lock) >= 三: # 列表里面出现次数超过一回的用户名
    3五 lock_write = open(‘lock_file.txt’, ‘a’, encoding=’utf-8′)
    36 lock_write.write(lock+’\n’)
    37 lock_write.close()
    3捌 print(‘锁定用户:’, lock)

五.数据类型:int str
bool(False,True)后续补充

2、求出下列逻辑语句的值。

 注:必要先成立1个lock_file.txt文件,文件可认为空。

陆.标准语句:if
条件:(其余参照)else;elif;while;

1)8 or 3 and 4 or 2 and 0 or 9 and 7

7.break、continue和pass分别对应跳出循环,跳出当次循环继续下一循环,过掉当前实行代码的逻辑层次,继续实施

8

八.作业批注反馈:

2)0 or 2 and 3 and 4 or 6 and 0 or 3

  • count = count +1   
         简写       count += 1
  • result -= count   
     简写       (result = result – count)
  • 思维方式:化解难题的主意有数不清,不过面对工作,讲究作用,切勿主次颠倒(理想的措施:先拍卖难点取得想要的结果,在开始展览代码优化)
  • Python 崇尚轻巧 
    ,考虑难点,须求引发重大,1刀切入大旨;间来说之.快速更动提取为数学上的逻辑进行拍卖

    1 # Example 1 加法 输出
    2 ”’
    3 a = 10
    4 b = 20
    5 print(a+b)
    6 ”’
    7 # Example 2 循环1-10并不要7
    8 ”’
    9 count = 0
    10 while count < 10: 1一 count += 一 # count = count + 壹 一样的简写法 1二 if count == 七: 一3 continue 14 print(count) 1五 ''' 1陆 # Example 三 取偶数 壹七 ''' 18 # 方法1:(本身想的) 1九 # count = 0 20 # result = 0 贰一 # while count < 100: 22 # count += 1 23 # result = count % 2 24 # if result != 0: # count % 2 ==1 除2求余 25 # continue 26 # else: print(count) 27 # 方法2: 28 count = 0 29 while count < 100: 30 count += 2 3壹 print(count) 3二 ''' 3叁 # Example 四 求1-②+叁-肆+5...9玖的全部数的和 3肆 ''' 3五 count = 0 # type: 3陆 result = 0 三柒 while count < 9九: 38 count += 1 3九 if count % 二 == 1: 40 result += count 四一 else: 42 result -= count 43 print(result) 4四 ''' 四伍 # Example 伍 用户登入三回机会 四六 ''' 47 # 本身写的太LOW 要抓住逻辑重点 4捌 # password = '' 4九 # result = False 50 # count = 0 5壹 # sum = 0 5二 # while input('请输入密码:') != '123456': 五叁 # count += 1 54 # sum += count 5五 # if sum > 三:
    56 # print(‘你已经一遍输入错误’)
    伍七 # print(‘密码正确’)
    58 # 样板
    5玖 i = 0
    60 while i < 三: 陆1 username = input('请输入用户名') 6二 password = int(input('请输入密码')) 6叁 if username == '老叶' and password == 12345陆: 64 print('账号密码输入正确') 陆5 break 6六 else: 陆七 print('账号密码错误') 6八 i += 1 6玖 if i == 3 : 70 print('您输入错误次数过多,请等待半钟头后再登录') 7一 '''

4

 

三、下列结果是哪些?

1)、6 or 2 > 1

6

2)、3 or 2 > 1

3

3)、0 or 5 < 4

False

4)、5 < 4 or 3

3

5)、2 > 1 or 6

True

6)、3 and 2 > 1

True

7)、0 and 3 > 1

0

8)、2 > 1 and 3

3

9)、3 > 1 and 0

0

10)、3 > 1 and 2 or 2 < 3 and 3 and 4 or 3
> 2

2

  1. 简述变量命名规范

一由数字、字母、下划线组成二不能够以数字开端叁不能够含有Python的显要字肆变量可讲述5变量无法含有汉语陆变量不能够过长,用下划线链接

  1. name = input(“>>>”)
    name变量是什么数据类型?

字符串

  1. if条件语句的为主结构?

if 条件:

  结果

  1. while循环语句基本结构?

while 条件:

  结果

  1. 写代码:计算 一 – 2 + 叁 … + 9玖 中除去88之外全体数的总量?

    1 count = 0
    2 sum = 0
    3 while count < 99: 4 count += 1 5 if count == 88: 6 continue 7 if count % 2 ==0: 8 sum -= count 9 else: 10 sum += count 11 print(sum)

  2. 用户登入(二遍输错机会)且每一回输错误时体现剩余错误次数(提醒:使用字符串格式化)

    1 chance=0
    2 while chance < 3: 三 username = input('请输入用户名') 4 password = input('请输入密码') 5 if username == "taibai" and password == 'jinxin': 陆 print('登入成功') 7 break 八 elif username == "" or password == "": 玖 print('用户名可能密码无法为空') 10 else:print('用户名也许密码错误,剩余次数为%s'%(二-chance)) 1壹 chance+=一

 

  1. 简述ascii、unicode、utf-八编码关系?

 Assic(唯有25多种大概)→Unicode(十四人,2/五个字节表示八个字符)→Utf-八(用最少7位代表二个字符,英文:伍位一个字节;亚洲文字:十三人1个字节;欧洲文字:二多少人二个字节;)

  1. 简述位和字节的关系?

1个字节=8位

  1. “老男孩”使用UTF-八编码占用多少个字节?使用GBK编码占多少个字节?

9个字节,6个字节

  1. 创造乐趣模板程序必要:等待用户输入名字、地方、爱好,遵照用户的名字和欣赏实行自由现实 如:尊崇可亲的xxx,最喜爱在xxx地点干xxx

    一 name1 = input(‘请输入名字:’)
    2 place1 = input(‘请输入地方:’)
    三 hobby1 = input(‘请输入爱好:’)
    四 msg = ‘爱慕可亲的%(name)s,最喜爱在%(place)s地方干%(hobby)s’\
    5 %{‘name’:name1,’place’:place1,’hobby’:hobby1}
    6 print(msg)

  2. 等候用户输入内容,检查评定用户输入内容中是还是不是包含敏感字符?假使存在敏感字符提醒“存在敏感字符请重新输入”,并同意用户重新输入并打字与印刷。敏感字符:“小粉嫩”、“大铁锤”

    壹 comment = input(‘请输入内容:’)
    二 name一 = ‘小粉嫩’
    三 name二 = ‘大铁锤’
    4 while True :
    伍 if name一 in comment or name二 in comment:
    陆 print(‘有违规字符,从重新输入’)
    7 else:
    8 print(‘评论成功’)
    9 break

  3. 单行注释以及多行注释?

#内容,”’内容”’

  1. 简述你所通晓的Python三和Python2的分别?

壹大环境下,PY2中含有C、php、java等语言的恶习,重复代码多2PY三编码是utf-8,PY2编码是ASCII三PY贰用户输入用raw_input,PY三用户输入用input

  1. 看代码书写结果:

a = 1>2 or 4<7 and 8 == 8

print(a)

True

18.continue和break区别?

break退出循环,contin退出当前轮回,继续下三个循环往复

 

 

Bit,Bytes,Kb,Mb,Gb,Tb之间的转换关系。

1bytes=8bit,1kb=1024bytes,1Mb=1024kb,1Gb=1024Mb,1Tb=1024Gb

 

Unicode,utf-八,gbk,每一个编码英文,普通话,分别用多少个字节表示。

Unicode表示英文:肆华语:四

Utf-8代表英文:一 国语:三

Gbk代表英文:二 中文:二

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有