week02
week02 练习
-
猜数字,设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确,然后退出循环。
while 1: num = int(input("请输入你猜的数字: ")) if num == 66: print("恭喜猜对了",num) break #flag = False elif num < 66: print("你猜的数字太小了,请重新输入!") else: print("你猜的数字太大了,请重新输入!") -
在上一题的基础,设置:给用户三次猜测机会,如果三次之内猜测对了,则显示猜测正确,退出循环,如果三次之内没有猜测正确,则自动退出循环,并显示‘大笨蛋’。
num = 0 while num < 3: suspect_num = int(input("请输入你猜的数字: ")) if suspect_num == 66: print("恭喜猜对了,最终数字是%d" %suspect_num) break elif suspect_num < 66: if num < 2: spe_num = 2 - num print("你猜的数字太小了,请重新输入!,你还有%d次机会" %spe_num) else:print("没有机会了,大笨蛋") else: if num < 2: spe_num = 2 - num print("你猜的数字太大了,请重新输入!,你还有%d次机会" %spe_num) else:print("没有机会了,大笨蛋") num += 1 -
求1-100的所有数的和。
num = 0 v = 1 while num < 101: v = num + v num += 1 print(v) -
求1-2+3-4+5 ... 99的所有数的和。
num = 1 v = 0 while num <= 99: if num % 2 == 0: v = v - num else: v = num + v num += 1 print(v) -
⽤户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)
user = "ares" passwd = "1234" num = 0 while num < 3: user_name = input("请输入用户名: ") user_paaswd = input("请输入密码: ") if user_name == user and user_paaswd == passwd: print("登陆成功") break else: if num != 2: v = 2 - num print("用户名或者密码错误,请重新登陆,你还有%d次机会" %v) else: print("你输入三次密码错误,请联系管理员") num += 1 -
简述位和字节的关系?
答:在计算机中位是最小但为用b(bit)来表示,字节用B(byte)表示,8位代表一个字节,换算公式是:8b = 1B KB(kilobyte),千字节 公式: 1024B = 1KB M(Megebyte),兆 公式:1024KB = 1M G(Gigbyte),千兆 公式:1024M = 1G T(Terabyte),万亿字节 公式:1024G = 1T -
简述ASCII、Unicode、utf-8编码
ASCII: 是最早计算机的编码,只能表示英文等信息,在其内部只有256种二进制和英文等信息的对应关系,ascii码规定用8位来表示一个字符。 Unicode: 原因:为了能让计算机支持全世界任何文字 ucs2:起初unicode字符集固定使用2个字节来表示码位 ucs4:后来unicode使用4个字节表示所有字符 2019年5月unicode已收集137929个字符,也就说ucs4还没有被占满,如果发现其他的文字还可以继续扩增。 ucs4的优缺点: 缺点:因为都使用4个字节表示码位,同样的字符的码位会更占空间。所以,计算机中再网络传输、硬盘存储时都不会用unicode字符集的码位存储,而是把码位转换(压缩)成utf-8等编码的二进制再进行传输和硬盘存储。 优点:可以表示所有字符并且长度固定4字节,方便内存中进行数据计算(不必担心太占用内存空间,因为内存占用的计算的数据一般不会太大)。 注:网络传输指的是通过网络发送一段文字等消息; 硬盘存储指的是把一些文档等信息保存到硬盘上。 utf-8:是一套以 8 位为一个编码单位的可变长编码。会将一个码位编码为 1 到 4 个字节,对于码位进行编码时分为两步: ## 总结 计算机上所有的东西最终都会转换成为二进制再去运行。 ascii编码、unicode字符集、utf-8编码本质上都是字符与二进制的关系。 ascii,字符和二进制的对照表。 unicode,字符和二进制(码位)的对照表。 utf-8,对unicode字符集的码位进行压缩处理,间接也维护了字符和二进制的对照表。 ucs2和ucs4指的是使用多少个字节来表示unicode字符集的码位。 目前最广泛的编码为:utf-8,他可以表示所有的字符且存储或网络传输也不会浪费资源(对码位进行压缩了)。 二进制、八进制、十进制、十六进制其实就是进位的时机不同。 一个字节8位 b/B/KB/M/G的关系。 -
判断下列逻辑语句的结果
1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 -
求出下列逻辑语句的值。
8 or 3 and 4 or 2 and 0 or 9 and 7 0 or 2 and 3 and 4 or 6 and 0 or 3 -
看代码写结果
6 or 2 > 1 3 or 2 > 1 0 or 5 < 4 5 < 4 or 3 2 > 1 or 6 3 and 2 > 1 0 and 3 > 1 2 > 1 and 3 3 > 1 and 0 3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2 -
有变量name = "aleXleNb " 完成如下操作:
- 判断 name 变量是否以 "al" 开头,并输出判断结果
- 判断name变量是否以"Nb"结尾,并输出判断结果
- 将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
- 将 name 变量对应的值变大写,并输出结果
- 将 name 变量对应的值变小写,并输出结果
- 请输出 name 变量对应的值的第 2 个字符?
- 请输出 name 变量对应的值的前 3 个字符?
- 请输出 name 变量对应的值的后 2 个字符?
-
有字符串s = "123a4b5c"
-
通过对s切片形成新的字符串 "123"
s = "123a4b5c" s1 = s[:3] print(s1) -
通过对s切片形成新的字符串 "a4b"
s2 = s[3:6] print(s2) -
通过对s切片形成字符串 "c"
s3 = s[-1:] print(s3) -
通过对s切片形成字符串"ba2"
s4 = s[-3::-2] print(s4)
-
-
使用while循环字符串 s="asdfer" 中每个元素。
s="asdfer" num = 0 while num < len(s): print(s[num]) num += 1 -
使用while循环对s="321"进行循环,打印的内容依次是:"倒计时3秒","倒计时2秒","倒计时1秒","出发!"。
s = "321" num = 0 while num < len(s): print("倒计时%d秒"%int(s[num])) num += 1 print("出发!") -
计算用户输入的内容中有几个 h 字符?
如:content = input("请输入内容:") # 如fhdal234slfh98769fjdla content = input("请输入内容: ") while num < len(content): if content[num] == 'h': sum += 1 num += 1 print(sum) -
计算用户输入的内容中有几个 h 或 H 字符?
如:content = input("请输入内容:") # 如fhdal234slfH9H769fjdla num = 0 h_sum = 0 H_sum = 0 content = input("请输入内容: ") while num < len(content): if content[num] == 'h': h_sum += 1 elif content[num] == 'H': H_sum += 1 num += 1 print("其中有%s个h,有%s个H"%(h_sum,H_sum)) -
使用while循环分别正向和反向对字符串 message = "伤情最是晚凉天,憔悴厮人不堪言。" 进行打印。
# 正向打印 num = 0 message = "伤情最是晚凉天,憔悴厮人不堪言。" while num < len(message): print(message[num]) num +=1 # 反向打印 while num <= len(message): print(message[-num]) num += 1 -
获取用户输入的内容中 前4个字符中 有几个 A ?
如:content = input("请输入内容:") # 如fAdal234slfH9H769fjdla num = 0 sum = 0 content = input("请输入内容:") v = content[:4] while num < len(v): if v[num] == 'A': sum += num num += 1 print("输入的字符串中有%d个A"%sum) -
获取用户两次输入的内容,并将所有的数据获取并进行相加,如:
""" 要求: 将num1中的的所有数字找到并拼接起来:1232312 将num1中的的所有数字找到并拼接起来:1218323 然后将两个数字进行相加。 """ num1 = input("请输入:") # asdfd123sf2312 num2 = input("请输入:") # a12dfd183sf23 # 请补充代码 -
简述你了解的Python2和Python3的区别?
答: 1、python2 解释器默认编码(python2与python3的区别一) python2 解释器默认编码: ascii python3 解释器默认编码: utf-8 2、输入(python2与python3的区别二) python2: name = raw_input('请输入姓名') python3: name = input('请输入你的姓名') 3、输出(python2与python3的区别三) python2: print "你好" python3: print("你好") 4、数字表示(python2与python3的区别四) python2 64位机器,范围-2^63~263-1 超出以上范围,python自动转化为long(长整型) 注:long(长整型)数字末尾有一个L python3 所有整型都是int,没有long(长整型) 5、整型除法(python2与python3的区别五) python2: 只能保留整数位 python3: 可以保留所有内容 6、range/xrange(python2与python3的区别六) python2: xrange: 不会在内存中立即创建,而是在循环时,边循环边创建 range: 在内存立即把所有的值创建 python3: 只有range,相当于python2中的xrange range: 不会在内存中立即创建,而是在循环时,变循环边创建 7、包的定义(python2与python3的区别七) python2: 文件夹中必须有__init__.py文件 python3:不需要有__init__.py文件 8、字典的keys / values /items 方法(python2与python3的区别八) python2: 返回列表,通过索引可以取值 python3: 返回迭代器,只能通过循环取值,不能通过索引取值 9、map / filter(python2 与 python3)的区别九 python2: 返回列表,直接创建值,可以通过索引取值 python3: 返回迭代器,不直接创建值,通过循环,边循环边创建 10、 str (字符串类型)的区别(python2与python3的区别十) python2: str类型,相当于python3中的字节类型,utf-8/gbk等其他编码 unicode类型,相当于python3中的字符串类型,Unicode编码 python2中没有字节类型 python3: str类型,字符串类型,Unicode编码 python3中没有Unicode类型 11、继承object(python2与python3的区别十一): class Foo: pass class Foo(object): pass # 在python3中这俩的写法是一样,因为所有的类默认都会继承object类,全部都是新式类。 # 如果在python2中这样定义,则称其为:经典类 class Foo: pass # 如果在python2中这样定义,则称其为:新式类 class Foo(object): pass # 新式类 # 继承object # 支持super # 多继承 广度优先C3算法 # mro方法 # 经典类 # py2中不继承object # 没有super语法 # 多继承 深度优先 # 没有mro方法
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
浙公网安备 33010602011771号