第2章 Python基础-字符编码&数据类型 字符编码&字符串 练习题
1.简述位、字节的关系
位(bit)是计算机中最小的表示单元,数据传输是以“位”为单位的,1bit缩写为1b
字节(Byte)是计算机中最小的存储单位,1Byte缩写为1B
8bit = 1Byte
2.简述ascii、unicode、uft-8、gbk的关系
美国制定了一套字符编码,对英语字符与二进制位之间的关系做了统一规定,这被称为ASCII码,由1个字节组成,最多支持2**8=256个字符
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案,现代操作系统和大多数编程语言都直接支持Unicode,不管是英文字母还是汉字,通常由2个字节组成(只有很生僻的字符才会被编码成4个字节),最多支持2**16=65536个字符,如果文本基本全部都是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,所以本着节约精神,出现了UTF-8编码
UTF-8最大的特点就是它是一种可变长的编码方式,通常由1-3个字节组成,常用的英文字母被编码成1个字节,汉字通常是3个字节(只有很生僻的字符才会被编码成4-6个字节),同时ASCII编码可以看成UTF-8编码的一部分(英文字符),所以只支持ASCII编码的软件可以在UTF-8编码下运行
GBK是汉字国标扩展码,由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做一一对应。Windows默认编码GBK,中文占2个字节
现在计算机系统通用的字符编码工作方式:在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或需要传输时候,就转换为UTF-8编码
3.请写出“李杰”分别用utf-8和gbk编码所占的位数
UTF-8中一个英文占1个字节,一个中文占3个字节,此处“李杰”占6个字节
GBK中一个中文占2个字节,此处“李杰”占4个字符
4.如有一个变量n1 = 5,请使用int提供的方法,得到该变量最少可以用多少个二进制位表示?
#!/usr/bin/env python
#-*- encoding:utf-8 -*- n1 = 5
v = int.bit_length(n1)
print(v)
5.布尔值分别有什么?
True和False
"" [] () {} => False #空字符串,空列表,空元祖,空字典
"有内容" => True
0 => False
其他数字 => True
6.阅读代码,请写出执行结果
a = "alex"
b = a.capitalize()
print(a)
print(b)
执行结果:
alex
Alex
#首字母变大写,其他字母变小写
7.写代码,有如下变量,请按照要求实现每个功能
name=" aleX"
a.移除name变量对应的值两边的空格,并输出移除后的内容
print(name.strip())
b.判断name变量对应的值是否以"al"开头,并输出结果
print(name.startswith('al'),name)
c.判断name变量对应的值是否以"X"结尾,并输出结果
print(name.endswith('X'),name)
d.将name变量对应的值中的"l"替换为"p",并输出结果
print(name.replace('l','p'))
e.将name变量对应的值中的"l"分割,并输出结果。
print(name.split('l'))
f.请问,上一题l分割之后得到是什么类型(可选)?
#列表
g.将name变量对应的值变大写,并输出结果
print(name.upper())
h.将name变量对应的值变小写,并输出结果
print(name.lower())
i.请输出name变量对应的值的第2个字符?
print(name[1])
j.请输出name变量对应的值的前3个字符?
print(name[:3])
k.请输出name变量对应的值的后2个字符?
print(name[-2:]) #-1代表最后一个字符,-2代表倒数第二个字符
l.请输出name变量对应的值中"e"所在的索引位置?
print(name.index('e'))
m.获取子序列,仅不包含最后一个字符。如:oldboy 则获取oldbo;root则获取roo
print(name.rstrip(name[-1:]))
8.字符串是否可迭代?如可以请使用 for 循环每一个元素?
#可迭代对象==可以被for进行循环获取
name = "aleX"
for i in name:
print(i)
9.请用代码实现:
a.利用下划线将列表的每一个元素拼接成字符串,li = "alexericrain"
li = "alexericrain"
print('_'.join(li))
b.利用下划线将列表的每一个元素拼接成字符串,li = ['alex','eric','rain']
li = ['alex','eric','rain']
print('_'.join(li))
10.Python2中的range和Python3中的range的区别?
Python2中的range返回的是一个列表,直接创建内容
Python3中的range返回的是一个迭代值,只有for循环时,内容才一个一个创建
11.实现一个整数加法计算器:
如:
content = input('请输入内容:') #如:5+9
#方法一:
content = input('请输入内容:')
print(eval(content)) #方法二:
content = input('请输入内容:') #5+9
n1,n2 = content.split('+')
n1 = int(n1)
n2 = int(n2)
print(n1+n2)
12.计算用户输入的内容中有几个十进制数?几个字母?
如:
content=input('请输入内容:') #如: asduiaf878123jkjsfd-213928
content = input('请输入内容:')
number_of_decimal = 0
number_of_alpha = 0
for i in content:
if i.isdecimal():
number_of_decimal += 1
if i.isalpha():
number_of_alpha += 1
print('十进制数的数量:', number_of_decimal, '字母的数量:', number_of_alpha)
content=input('请输入内容:')
number_of_decimal = 0
number_of_alpha = 0
for i in range(len(content)):
if content[i].isdecimal():
number_of_decimal += 1
if content[i].isalpha():
number_of_alpha += 1
print('十进制数的数量:',number_of_decimal,'字母的数量:',number_of_alpha)
13.简述int和9等数字以及str和"xxoo"等字符串的关系?
int,str 是类
0和"xxoo"是根据相应的类创建的对象
14.制作随机验证码,不区分大小写。
流程:
- 用户执行程序
- 给用户显示需要输入的验证码
- 用户输入的值
用户输入的值和显示的值相同时显示正确信息;否则继续生成随机验证码继续等待用户输入
生成随机验证码事例:
def check_code():
import random
checkcode = ''
for i in range(4):
current = random.randrange(0,4)
if current != i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0,9)
checkcode += str(temp)
return checkcode code = check_code()
print(code)
#!/usr/bin/env python
# -*- encoding: utf8 -*- def check_code():
import random
checkcode = ''
for i in range(4):
current = random.randrange(0, 4)
if current != i:
temp = chr(random.randint(65, 90))
else:
temp = random.randint(0, 9)
checkcode += str(temp)
return checkcode while True:
code = check_code()
print(code)
app = input("请输入验证码:")
if code.upper() == app.upper():
print("输入正确")
break
else:
print("输入错误")
s = input("是否重新输入?")
if s == "no":
break
else:
continue
15.开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:
如“苍老师”“东京热”,则将内容替换为***
v = input(">>>")
v = v.replace("苍老师","***")
v = v.replace("东京热","***")
print(v)
16.制作表格
循环提示用户输入:用户名、密码、邮箱(要求用户输入的长度不超过20个字符,如果超过则只有前20个字符有效)
如果用户输入q或Q表示不再继续输入,将用户输入的内容以表格形式显示。
#!/usr/bin/env python
# -*- encoding: utf8 -*- s = ""
while True:
name = input("用户名:")
if name == "q" or name == "Q":
break
if len(name) >= 20:
name = name[:20]
passwd = input("密码:")
if len(passwd) >= 20:
passwd = passwd[:20]
email = input("邮箱:")
if len(email) >= 20:
email = email[:20]
template = "{0}\t{1}\t{2}\n"
v = template.format(name, passwd, email)
s += v print(s.expandtabs(20))
第2章 Python基础-字符编码&数据类型 字符编码&字符串 练习题的更多相关文章
- Python基础4:数据类型:数字 字符串 日期
[ Python 数据类型 ] 我们知道,几乎任何编程语言都具有数据类型:常见的数据类型有:字符串.整型.浮点型以及布尔类型等. Python也不例外,也有自己的数据类型,主要有以下几种: 1.数字: ...
- [Python笔记][第一章Python基础]
2016/1/27学习内容 第一章 Python基础 Python内置函数 见Python内置函数.md del命令 显式删除操作,列表中也可以使用. 基本输入输出 input() 读入进来永远是字符 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Python基础篇(格式化输出,运算符,编码):
Python基础篇(格式化输出,运算符,编码): 格式化输出: 格式:print ( " 内容%s" %(变量)) 字符类型: %s 替换字符串 %d 替换整体数字 ...
- python基础之序列类型的方法——字符串方法
python基础之序列类型的方法--字符串方法 Hello大家好,我是python学习者小杨同学,经过一段时间的沉淀(其实是偷懒不想更新),我终于想起了自己的博客账号,所以这次带来的是序列方法的后半部 ...
- 第1章 Python基础之字符编码
阅读目录 一.什么是字符编码 二.字符编码分类 三.字符编码转换关系 3.1 程序运行原理 3.2 终极揭秘 3.3 补充 总结 回到顶部 一.什么是字符编码 计算机要想工作必须通电,也就是说'电'驱 ...
- python基础(8):基本数据类型三(dict)、is和==、编码和解码
1. 字典 1.1 字典的介绍 字典(dict)是python中唯一的一个映射数据类型,它是以{}括起来的键值对组成.在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将k ...
- python基础(三)----字符编码以及文件处理
字符编码与文件处理 一.字符编码 由字符翻译成二进制数字的过程 字符--------(翻译过程)------->数字 这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之 ...
- python基础知识(七)---数据类型补充、"雷区"、编码
数据类型补充."雷区".编码 1.数据类型补充 str: #字符串数据类型补充 s1=str(123) #常用于类型转换 print(s1) #capitalize()首字母大写 ...
随机推荐
- phpstudy 开启apache反向代理
vhosts.conf 1 2 3 4 5 6 7 8 9 10 11 <VirtualHost *:8080> ServerAdmin webmaster@dummy-host.exam ...
- Windows 10 中的 Shell 指令
这篇文章本无技术含量,也不高大上,不过想想,还是写下来吧,肯定有人会用得到的. 常玩系统的朋友,应该知道 Shell 指令,这是一个很好玩很神奇的指令.利用它,可以用简短的单词,轻易地打开系统中的一些 ...
- 递归的隐含限制——处理对象小的可以、大的不可以
最近自己编写了一个求n阶行列式的值的C程序,编译成功,并且使用了一个3阶行列式进行了测试,测试也成功了.以为这样就万事大吉了,可是后来在实际应用中调用该函数时却导致程序无法运行.注意到,实际应用中要求 ...
- js模板 arttemplate 让数据与html分离
js模板引擎 前后交互过程中最麻烦的就是如何将json数据展示到页面中,循环拼接html的方法实在是太low了,饱受其苦,BAT同样会遇到这样的问题,于是乎就有个各自的js模板引擎,目的只有一个:让数 ...
- Git之第三方托管oschina
一.git 简介 1.Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 2.Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. ...
- Spring Boot 之 RESTfull API简单项目的快速搭建(一)
1.创建项目 2.创建 controller IndexController.java package com.roncoo.example.controller; import java.util. ...
- C语言中连接器介绍
在C语言中.一个重要的思想就是分别编译.即若干个源程序能够在不同的时候单独进行编译.然后在恰当的时候整合到一起.可是连接器通常是与C编译器分离的,连接器怎样做到把若干个C源程序合并成一个总体呢? 典型 ...
- ES6学习笔记六:迭代
一:迭代器 它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员). ES6创造了一种新的遍历命令for. ...
- Excel分数、小数、身份证的录入
身份证输入: 方法1:将单元格格式设置为文本,在输入数据 方法2:在输入之前输入英文状态下的单引号在输入数据 分数输入: 办法1:0[空格]数字/数字,如:0 1/3 办法2:将需要输入数据的区域设置 ...
- Servlet路径跳转问题
Servlet中路径跳转(服务器端跳转)JSP 1.相对路径 注意这里的相对含义,相对于谁而言 经过多次试验总结,servlet相对路径跳转相对于servlet配置的xml路径(或servlet3. ...