Python小白学习之路(四)——第一次练习题

写在前面:

今天下雪了呢!连着两天都没有更新学习记录。

我没有偷懒呢。做了一天的练习题,昨天学的内容还没总结完,太累了就回去睡觉了

连续一周早起,强大的内心也无法支撑我疲惫的身体

今天早起做了整理。加油哦(贵在坚持,一定要好好坚持下去)

1.执行 Python 脚本的两种方式

(1)进入python解释器,等待用户实时输入
(2)python.exe + 执行文件的路径


2.简述位、字节的关系

1字节 = 8位


3.简述 ASCII,Unicode,utf-8、gbk 的关系

ASCII是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符.

Unicode是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2**16=65556个,称为万国语言,特点:速度快,但浪费空间,可以用在内存处理中,兼容了utf-8,gbk,ASCII.

utf-8是为了改变Unicode的浪费内存空间的缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,特点;节省空间,速度慢.

gbk是中文的字符编码,用2个字节代表一个字符.


4.请写出  “李杰”  分别用 utf-8 和 gbk 编码所占的位数

utf-8: 48位
gbk: 32位


5.Pyhton 单行注释和多行注释分别用什么?

单行注释: #
多行注释: """......"""


6.声明变量注意事项有那些?

变量由数字、字母和下划线构成。
需要注意三点:第一,第一位不可以是数字;第二,不可以使用python里的关键字;第三,尽量不要和python内置的东西重复


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

程序:
test = 5
v = test.bit_length()
print(v)

运行结果:
3

8.布尔值分别有什么?

真(True)或假(False),真为1 假为0

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

a  =  "alex" b  =  a.capitalize() 
print(a) 
print(b)

请写出输出结果: alex Alex
#(说明字符串一旦创建便不可修改)

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

    name  =  "  aleX"
    a.  移除 name 变量对应的值两边的空格,并输入移除后的内容
    b.  判断 name 变量对应的值是否以  "al"  开头,并输出结果
    c.  判断 name 变量对应的值是否以  "X"  结尾,并输出结果
    d.  将 name 变量对应的值中的  “l”  替换为  “p”,并输出结果
    e.  将 name 变量对应的值根据  “l”  分割,并输出结果。
       
    f.  请问,上一题  e  分割之后得到值是什么类型(可选)?
    g.  将 name 变量对应的值变大写,并输出结果
    h.  将 name 变量对应的值变小写,并输出结果
    i.  请输出 name 变量对应的值的第 2 个字符?
    j.  请输出 name 变量对应的值的前 3 个字符?

程序:

name = ' aleX'
a = name.lstrip() 
b = name. startswith('al')
c = name.endswith('X')
d = name.replace('l','p')
e = name.partition('l')
f = type(e)
g = name.upper()
h = name.lower()
i = name[1]
print(a,b,c,d,e,f,g,h,i)

运行结果:

aleX False True apeX (' a', 'l', 'eX') <class 'tuple'> ALEX alex 

#请输出 name 变量对应的值的前 3 个字符

for j in range(0,3):
  print((name[j]))

运行结果:

a

    k.  请输出 name 变量对应的值的后 2 个字符?
    l.  请输出 name 变量对应的值中  “e”  所在索引位置?
    m.  获取子序列,仅不包含最后一个字符。如:  oldboy  则获取  oldbo;  root  则获取  roo

#k.程序一:
name = ' aleX'
for j in range(4,6):
print(name[j])

#k.程序二:
name = ' aleX'
v = name[4:6]
print(v)

#k.程序三:
name = ' aleX'
v1 = name.find('e')
v2 = name.find('X')
for j in range(v1,v2 + 1):
print(name[j])‘


#l.程序:
name = ' aleX'
v1 = name.find('e')
print(v1)

#m.程序:
name = ' aleX'
v1 = name.find('X')
v2 = name[0:v1]
print(v2)

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

字符串为可迭代对象。

程序:
test = 'abcdefg'
for j in test:
print(j)

#简单的来理解,可迭代对象为可以被for进行循环获取的

22.请用代码实现:   

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

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

a.程序:
li = "alexericrain"
v = '_'.join(li)
print(v)

b.程序:
li = ['alex', 'eric', 'rain']
v1 = ''.join(li)
v2 = '_'.join(v1)
print(v2)

#b题的程序我是在还没有学习列表知识前就试着想把列表转成字符串来处理。
#是因为我理解错题目意思了,对于列表中的每一个元素,是用逗号来分割的。

#改程序如下:
li = ['alex', 'eric', 'rain']
v1 = '_'.join(li)
print(v1)

23.Python2 中的 range 和 Python3 中的 range 的区别

在Python2中,range一旦创建,内存便开辟,连续数字已经创建。python中有xrange,用法同Python中的range
在Python3中,rang创建之后,需要通过for循环来一个一个创建连续数字,也可以通过参数设置来确定步长


24.实现一个整数加法计算器

程序:
while True:
  num1 = input('请输入第一个加数:')
  x1 = int(num1)
  num2 = input('请输入第二个加数:')
  x2 = int(num2)
  print(x1,'+',x2,'=',x1 + x2)

#我想,我的理解能力真的有待提高,老师的意思是用户直接输入5+9,让我来写程序计算结果(手动捂脸)
#修改程序:

while True:
  test1 = input(">>>")
  test2 = test1.partition('+')
  v1 = int(test2[0])
  v2 = int(test2[2])
  print(v1+v2) 


25.计算用户输入的内容中有几个十进制小数?几个字母?

test = input(">>>")
m = 0
n = 0
for j in test:
    if (96 < ord(j) < 123) or (64 < ord(j) < 91):
        m += 1
    elif 47 < ord(j) < 58:
        n += 1
    else:
        pass
print('字母个数:',m,'数字个数:',n)

26.简述 int 和 9 等数字以及 str 和 "xxoo" 等字符串的关系?

类和对象的关系

27.制作趣味模板程序   

 需求:等待用户输入名字、地点、爱好,根据用户的名字和爱好进行任意现实

while True:
    test1 = input('请输入您的姓名:')
    test2 = input('请输入您喜欢做的事情:')
    test3 = input('请输入您喜欢在哪里做喜欢的事情')
    v1 = [test1,'最喜欢在',test3,test2]
    v2 = ''.join(v1)
    print(v2)

#我好想总是喜欢把问题复杂化,可能是学过的知识不能灵活应用
#慢慢来吧,其实这个题用.format直接格式化会很简单

#程序修改:
while True:
    test = '敬爱可亲的{0},最喜欢在{1}{2}'
    name = input('请输入您的姓名:')
    something = input('请输入您喜欢做的事情:')
    place = input('请输入您喜欢在哪里做喜欢的事情:')
    v = test.format(name,place,something)
    print(v)

28.制作随机验证码,不区分大小写。


    流程:
        -  用户执行程序
        -  给用户显示需要输入的验证码
        -  用户输入的值
        -  用户输入的值和显示的值相同时现实正确信息;否则继续生成随机验证码继续等待用户输入

#随机验证码产生
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)
    usercode = input('>>>')
    v = usercode.upper()
    if v == code:
        print('验证码输入正确')
        break
    else:
        print('验证码输入错误')

29.开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:

    如  "苍老师"  "东京热",则将内容替换为  ***

while True:
    test = input('>>>')
    v = test.replace('东京热','***')
    v = v.replace('苍井空','***')
    print(v)


30. 制作表格  

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

while True:
    test1 = input('username:')
    test2 = input('password;')
    test3 = input('mailbox:')
    test4 = ' username	 password	 mailbox
'
    test5 = [test1, '	', test2, '	', test3]
    v1 = test4.expandtabs(20)
    v2 = ''.join(test5)
    v4 = v2.expandtabs(20)
    print(v1, v4)
    if input('') == 'q' or 'Q':
        break
    else:
        pass

#我自己写的这个程序后面发现是有点问题的,因为只能打印一个用户的信息,当下一个用户信息输入时,就会覆盖掉前一个用户信息

#程序完善:
s = 'username	password	mailbox
'
while True:
    test1 = input('username:')
    test2 = input('password;')
    test3 = input('mailbox:')
    template = '{0}	{1}	{2}
'
    v = template.format(test1,test2,test3)
    s = s + v
    if input('') == 'Q' or 'q ':
        break
    else:
        pass
print(s.expandtabs(20))

其实,要想实现一个功能,程序可以有很多种方法。我们不仅仅是局限于当期,写完一个程序要多思考、多完善。加油!

原文地址:https://www.cnblogs.com/guoruxin/p/9860545.html