Python学习 10 - 基本数据类型小练习

这篇博客介绍了Python学习中的基本数据类型练习,包括位、字节的关系,ASCII、Unicode等编码的区别,以及Python中的注释、变量声明、字符串操作等基础知识。还涉及到了编码转换、布尔值、字符串迭代、列表操作、数字处理等多个实践问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人学习总结笔记如有不足和错误欢迎指教谢谢

1、执行 Python 脚本的两种方式
        1、进入python直接打命令
        2、让python运行1.py

2、简述位、字节的关系
        8位等于1字节

3、简述 ascii、unicode、utf-8、gbk 的关系
        1、ASIIC编码中一个字符的大小就是1Byte
        2、Unicode将各国文字统一编码,所以Unicode编码可以看做是ASCII的扩展。特点:速度快,但是占内存大。
        3、UTF-8=ASCII码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存等等
        4、GBK也是基于Unicode编码的进一步优化,GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示。
        cmd终端默认GBK
        unicode   utf8   gbk(针对中文)
        utf8: 用3个字节表示中文
        gbk : 用2个字节表示中文

4、请写出 “李杰” 分别用 utf-8 和 gbk 编码所占的位数
        utf-8:一个汉字是三个字节
        gbk:一个汉字是2个字节

5、Pyhton 单行注释和多行注释分别用什么?
        单行注解:#
        多行注解:'''中间是需要注解的内容(各个行)'''

6、声明变量注意事项有那些?
        变量名必须是:字母、数字、下划线 组成的,不能使用数字开头而且不能使用python里面的关键字

7、如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示?

n1 = 5
v = n1.bit_length()
print (v)

8、布尔值分别有什么?
真True 或者 假False

"" = False
" " = True

0 = False
其他 = True

9、阅读代码,请写出执行结果

a = "alex"
b = a.capitalize()    #首字母大写
print(a)
print(b)

请写出输出结果:
alex
Alex

10、写代码,有如下变量,请按照要求实现每个功能

 name = " aleX "

 a. 移除 name 变量对应的值两边的空格,并输入移除后的内容       

v = name.strip()
print('a',v)

b.判断 name 变量对应的值是否以 "al" 开头,并输出结果

v1 = v.startswith('al')
print('b',v1)

 c.判断 name 变量对应的值是否以 "X"  结尾,并输出结果

v2 = v.endswith('X')
print('c',v2)

 d.将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果

v3 = v.replace('l','p')
print('d',v3)

e.将 name 变量对应的值根据 “l” 分割,并输出结果

v4 = v.partition('l')
print('e',v4)    #e ('a', 'l', 'eX')
v5 = v.split('l')
print('e1',v5)    #e1 ['a', 'eX']


 f.请问,上一题 e     分割之后得到值是什么类型(可选)?分段序列 ?字典?

         ('a', 'l', 'eX') = 元祖类型数据,不可变序列
        ['a', 'eX'] = 列表数据,是可变数据

g.将 name 变量对应的值变大写,并输出结果

v6 = v.upper()
print('g',v6)     #g ALEX

h.将 name 变量对应的值变小写,并输出结果

v7 = v.lower()
print('h', v7)    #h alex

i.请输出 name 变量对应的值的第 2 个字符?

v8 = v[1]
print('i',v8) #i l

j.请输出 name 变量对应的值的前 3 个字符?

v9 = v[0:3]
print('j',v9) #j ale

k.请输出 name 变量对应的值的后 2 个字符?

v14 = v[-2:]
print('k', v14) #k eX

l.请输出 name 变量对应的值中 “e” 所在索引位置?

v11 = v.find('e')
print('l',v11) #l 2

m.获取子序列,仅不包含最后一个字符。如: oldboy     则获取 oldbo;    root     则获取 roo

v12 = input('>>>') #等待用户输入
v13 = len(v12)    #计算用户输入的字符串的字符数
v13 = v12[0:(v13-1)]    #获取从0位到字符串长度减1位的 字符串数值
print(v13)

11、字符串是否可迭代对象?如可以请使用 for 循环每一个元素?

能被for循环就是可迭代

v1 = input('>>>')
for v2 in v1 :
    print (v2)

12、请用代码实现:

        a.     利用下划线将列表的每一个元素拼接成字符串,li = "alexericrain"

li = "alexericrain"
v = '_'.join(li)
print(v) #a_l_e_x_e_r_i_c_r_a_i_n

        b.     利用下划线将列表的每一个元素拼接成字符串,li = ['alex',    'eric',    'rain']

li = ['alex','eric','rain']
v = '_'.join(li)
print(v)     #alex_eric_rain

13、Python2 中的 range 和 Python3 中的 range 的区别?

python2 中 第一次程序运行到range时会在内存里创建出所有的range数字
python3 中 第一次程序运行到range时只会在内存中创建 range首尾的两个数字

x = range(0,100,1)
for v in x :
    print(v)   # 1 - 99

x1 = range(100,0,-1)
for v1 in x1 :
    print(v1) # 100 - 1

14、实现一个整数加法计算器:例如用户输入 5+5 、5+ 6、 6 + 8 、 9 +9

n = input('>>>')
v1,v2 = n.split('+')     #以 + 为分割符 把用户输入的字符串 分割成两个,并且装入v1 和 v2 两个变量里面
v3 = int(v1) + int(v2) #把v1 和 v2 转换成int数据类型然后相加
print(v3)

虽然实现了但是有个疑问?就是split之后 v1和v2 里面可能右空格这个字符,但是可以直接通过int命令转换??反正最终实验结果是成功了

15、计算用户输入的内容中有几个十进制小数?几个字母?(统计用户一共输入了多少位数字或字母)

shuZiShuLiang = 0
ziMuShuLiang = 0
shuRuDeZhi = input('请输入数字或字母:')	   #等待用户输入 任意值字符串
for x in range(0, len(shuRuDeZhi), 1): 	#循环0 到 字符串位数的数字每次数值加1
	v = shuRuDeZhi[x] 		#给变量V赋值 为输入字符串x位的 字符
	if v.isdecimal():  #如果当前的字符 是数字
		shuZiShuLiang += 1  #则shuZiShuLiang值加1
	elif v.isalpha():   #如果当前字符 是字母
		ziMuShuLiang += 1  #则ziMuShuLiang值加1
	else:
		pass    #如果输入的不是数字也不是字母则什么都不做
print('数字', shuZiShuLiang)
print('字母', ziMuShuLiang)

PS:

        判断数字用:

                isdecimal :只能判断阿拉伯数字为 真 (推荐用这个比较准)

        判断字母用:

                isalpha 判断字符串中是否只含有字母 或 汉字,输出布尔值

16、简述 int  和 9  等数字

9 是一个数字 是对象 它包含在 int中
str 是字符串类 是一种类型

这就是数据类型与数据的关系

17、制作趣味模板程序

xxx 出生在xxx国 xxx市 从小就是一个 聪明的x(男/女)孩子。

yongHuMingCheng = input('请输入您的姓名:')
chuShengGuoJia = input('请输入您出生的国籍:')
chuShengChengShi = input('请输入您出生的城市:')
xingBie = input('请输入您的性别(男/女):')
#xianShiWenBen = '{x}出生在{x1} {x2} 从小就是一个 聪明的{x3}孩子'  #如果直接在{}中写入变量名称那么显示的就是{变量命},因为这个赋值时字符串在''内部
xianShiWenBen = '{0}出生在{1}{2}从小就是一个聪明的{3}孩子'
#上面创建了 显示文本的模板 用了4个占位符
#v = xianShiWenBen.format(x = yongHuMingCheng, x1 = chuShengGuoJia, x2 = chuShengChengShi, x3 = xingBie)
v = xianShiWenBen.format(yongHuMingCheng, chuShengGuoJia, chuShengChengShi, xingBie)
#上面使用了format格式命令 分别依次带入用户所填写的变量值到模板的空位里面,顺序是0到3
print(v)

18、制作随机验证码,不区分大小写

while True:  #无线循环
    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) #显示验证码
    xiaoXieXiTongYanZhengMa = code.lower()   #把系统生成验证码变成小写并赋值给变量
    yongHuYanZhengMa = input('请输入验证码:')  #让用户输入验证码
    xiaoXieYongHuYanZhengMa = yongHuYanZhengMa.lower()  #把用户输入验证码变成小写并赋值给 xiaoXieYongHuYanZhengMa 变量
    if xiaoXieYongHuYanZhengMa == xiaoXieXiTongYanZhengMa: #判断小写用户验证码和小写系统验证码是不是一样
        print('验证码正确')  #如果一样就显示 验证码正确
        break       #跳出循环
    else:
        print('验证码有误请重新输入') #如果不一样就显示 重新输入

29、开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:123,qwe,我们,天上,okm

#建立一个敏感词库:123,qwe,我们,天上,okm

#敏感词库:123,qwe,我们,天上,okm
yongHuShuRu = input('>>>') #让用户输入含有敏感词的语句
v = yongHuShuRu.replace('123','***' )  # 分5步过滤敏感词
v = v.replace('qwe', '***')
v = v.replace('我们', '**')
v = v.replace('天上', '**')
v = v.replace('okm', '***')
print(v)

30、制作表格
循环提示用户输入:用户名、密码、邮箱(要求用户输入的长度不超过 20 个字符,如果超过则只有前 20 个字符有效)如果用户输入 q 或 Q   表示不再继续输入,将用户输入的内容以表格形式显示

n = ''  #定义一个空的变量
while True:     #创建循环
	yongHuMing = input('用户名:')  #等待用户输入名称
	if yongHuMing == 'q' or yongHuMing == 'Q':  #比对用户输入的是否位 Q 或 q
		break       #如果是结束循环
	else:
		pass    #否则什么都不做
	yongHuMing = yongHuMing[0:20]   #对用户输入的名字取20个字符
	miMa = input('密码')  #等待用户输入密码
	if miMa == 'q' or miMa == 'Q':  #比对用户输入的是否位 Q 或 q
		break   #如果是结束循环
	else:
		pass    #否则什么都不做
	miMa = miMa[0:20]   #对用户输入的密码取20个字符
	youXiangDiZhi = input('邮箱地址')
	if youXiangDiZhi == 'q' or youXiangDiZhi == 'Q':
		break
	else:
		pass
	youXiangDiZhi = youXiangDiZhi[0:20]
#	print(yongHuMing, miMa ,youXiangDiZhi) #打印用户名和密码
	biaoTou =  '用户名\t密码\t邮箱\n'  #创建列标题
	biaoTou = biaoTou.expandtabs(25)    #完善列标题
	print(biaoTou)  #显示列标题
#	v = 'yongHuMing\t miMa\t youXiangDiZhi\n'
	biaoGeShuJu = "{x}\t{x1}\t{x2}\n"   #创建表格数据模板
	v = biaoGeShuJu.format(x = yongHuMing, x1 = miMa ,x2 = youXiangDiZhi)   #将当前用户输入的值写入表格模板
	n = n + v #将上一次用户的表格和这一次的相加
	print(n.expandtabs(25))  #加工制表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值