zoukankan      html  css  js  c++  java
  • Python基础题

    1、 执行Python脚本的两种方式:

    Chmod +x 脚本
    ./脚本(路径的方式)
    Python  脚本
    

    2、 简述位、字节的关系

    一个字节=8位
    

    3、 简述ASCII、unicode、utf-8/gbk的关系

            Ascii:由一个字节组成,共能表示256个字符
            Unicode万国码,
    		Utf-32:  32位,表示每个字符占32位
    		Utf-16:	16位,表示每个字符占16位
    		Utf-8:	可边长的字符编码,一个英文字母和数字占位8位,欧洲文字占16位,汉字占24位
    		GBK:汉字的编码扩展规范,GBK2312---GBK1.0----GB18030
    

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

    gbk:4个字节====32位
        utf-8:六个字节===48位
    

    5、Python单行注释和多行注释分别用什么

    单行:#
        多行:''' '''或""" """
    

    6、声明变量注意哪些事项

        1)、变量是由数字、字母和下划线组成
        2)、变量不能有数字开头
        3)、变量尽量不要以下划线开头
        4)、不能以python内置变量命名变量名
        5)、变量名尽量做到见名知意
    

    8、如何查看变量在内存中的地址?

    id(变量)
    

    9、执行Python程序时,自动生产的.pyc文件的作用是什么?

    .pyc文件是二进制文件,有python文件编译后生成的字节码文件,作用:能加快文件的执行
    

    10、写代码

    a、实现用户输入用户名和密码,当用户名为sever且密码为123时,显示登录成功,否则登录失败!
            #!/usr/bin/env python
            import getpass
            name = input("please input username:")
            password  = getpass.getpass("please input pwd:")
            if name == "server"  and  password == "123":
                print("welcome to server")
            else:
                print("username or password error")
    
    b、实现用户输入用户名和密码,当用户名为sever且密码为123时,显示登录成功,否则登录失败,允许用户输入三次
            #!/usr/bin/env python
            import getpass
            name = input("please input username:")
            password  = getpass.getpass("please input pwd:")
            count = 0
            while True
                count += 1
                if name == "server"  and  password == "123":
                    print("welcome to server")
                else:
                    print("username or password error")
                if count == 3:
                    break
    
    c、实现用户输入用户名和密码,当用户名为sever或alex且密码为123时,显示登录成功,否则登录失败,允许用户输入三次
            #!/usr/bin/env python
            import getpass
            name = input("please input username:")
            password  = getpass.getpass("please input pwd:")
            count = 0
            while True
                count += 1
                if name == "server" or name == "alex"  and  password == "123":
                    print("welcome to server")
                else:
                    print("username or password error")
                if count == 3:
                    break
    

    11、写代码

    a、使用while循环,实现2-3+4-5+6-7+8.....+100的和
            #/usr/bin/env python
            #-*- coding:utf-8 -*-
            start = 1
            sum = 0
            while n > 1 and n < 100:
                temp = start % 2
                if temp == 1:
                    sum = sum - start
                else:
                    sum = sum + start
                start += 1
             print(sum)
    
    b、使用for循环和range,实现1-2+3-4+5-6.......+99的和
        #!/usr/bin/env python
        sum = 0
        for i in range(99):
            if i%2 == 1:
                sum = sum + i
            else:
                sum = sum - i
        print(sum)
    
    c、使用while循环实现输出1,2,3,4,5,7,8,9,11,12
            #!/usr/bin/env python
            n = 0
            while  n < 12:
                n += 1
                if n == 6 or n == 10:
                    continue
                print(n)
    
    d、使用while循环,实现1-100内所有奇数
        #!/usr/bin/env python
        n = 0
        while  n < 100:
            n += 1
            if n%2 == 1:
                print(n)
    
    e、使用while循环,实现1-100内所有偶数
        #!/usr/bin/env python
        n = 0
        while  n < 100:
            n += 1
            if n%2 == 0:
                print(n)
    

    12、分别书写出5,10,32,7的二进制表示:

    5: 0000 0101
        10:0000 1010
        32:0010 0000
        7: 0000 0111
    

    13、

    14、现有两个如下变量,请简述n1和n2是什么关系?

    n1 = 123
        n2 = 123
        n1和n2值相同,且指向同一个内存地址(255以内Python自动做)
    

    15、现有如下两个变量,请简述n1和n2是什么关系?

    n1 = 123456
        n2 = 123456
        只是两个值相等的变量,其他没有任何关系
    

    16、现有如下两个变量,请简述n1 n2是什么关系?

    n1 = 123456
        n1 = n2
        n1和n2 值相同,且指向同一个内存地址,但是修改后相互不影响
    

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

    >>> print(n1.bit_length())
            3
    

    18、布尔值分别有什么?

    True   和   False
    

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

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

    20、写代码,有如下变量,请按照要求实现每个功能
    name = "alex"

        a、移除name变量对应的值两边的空格,并输入移除有内存
            print(name.strip())
    
        b、判断name变量对应的值是否以"al"开头,并输出结果
            >>> name = "alex"
            >>> print(name.startswith("al"))
            True
        c、判断变量name是否以"X"结尾
            >>> print(name.endswith("X"))
            False
        d、将name便量对应的值根据“I”替换为“P”,并输出结果
            >>> name = "alex"
            >>> print(name.replace('l','p'))
            apex
        e、将name变量对应的值根据"l"分割,并输出结果
            >>> print(name.partition('l'))
            ('a', 'l', 'ex')
        f、请问,上一题e分割之后得到的是什么类型
            列表
        g、将name变量对应的值变大写,并输出结果
            >>> print(name.swapcase())
            ALEX
        h、将name变量对应的值变小写,并输出结果
            >>> name = "ALEX"
            >>> print(name.lower())
            alex
    
        i:请输出name变量对应值的第二个字符
            >>> name[1]
            'L'
        j、请输出name变量对应的值得前三个字符?
            >>> name[0:3]
            'ALE'
        k、请输出name变量的后两个字符
            >>> name[-2:]
            'EX'
        l、请输出name变量中“e”所在的索引位置
            >>> print(name.find('E'))
            2
    

    21、字符串是否可迭代?如可以请用for循环没一个元素

    可以迭代
             >>> for i in name:
                ...     print(i)
                ...
                A
                L
                E
                X
    

    22、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain']

    >>> print("_".join(li))
    alex_eric_rain
    

    22、写代码,有如下列表,按照要求实现每一个功能 li = ['alex', 'eric', 'rain']
    a. 计算列表长度并输出

    >>> print(len(li))
            3
    

    b. 列表中追加元素 “seven”,并输出添加后的列表

    >>> li.append("seven")
        >>> print(li)
        ['alex', 'eric', 'rain', 'seven', 'seven']
    

    c. 请在列表的第 1 个位置插入元素 “Tony”,并输出添加后的列表

    >>> li.insert(1,"Tony")
        >>> print(li)
        ['alex', 'Tony', 'eric', 'rain', 'seven', 'seven']
    

    d. 请修改列表第 2 个位置的元素为 “Kelly”,并输出修改后的列表

    >>> li[2]="Kelly"
    >>> print(li)
    ['alex', 'Tony', 'Kelly', 'rain', 'seven', 'seven']
    

    e. 请删除列表中的元素 “eric”,并输出修改后的列表

    >>> li.append("eric")
    >>> print(li)
    ['alex', 'Tony', 'Kelly', 'rain', 'seven', 'seven', 'eric']
    >>> li.remove("eric")
    >>> print(li)
    ['alex', 'Tony', 'Kelly', 'rain', 'seven', 'seven']
    

    f. 请删除列表中的第 2 个元素,并输出删除的元素的值和删除元素后的列表

    >>> li.pop(1)
    'Tony'
    

    g. 请删除列表中的第 3 个元素,并输出删除元素后的列表

    >>> li.pop(2)
    'seven'
    >>> print(li)
    ['alex', 'rain', 'seven']
    

    h. 请删除列表中的第 2 至 4 个元素,并输出删除元素后的列表

    >>> del li[1:4]
    >>> print(li)
    ['alex']
    

    i. 请将列表所有的元素反转,并输出反转后的列表

    >>> li = ['alex', 'eric', 'rain']
    >>> li.reverse()
    >>> print(li)
    ['rain', 'eric', 'alex']
    

    j. 请使用 for、len、range 输出列表的索引

    >>> for i in li:
    ...     print(li.index(i))
    ...
    0
    1
    2
    
    >>> for i in range(len(li)):
    ...     print(i)
    ...
    0
    1
    2
    

    k. 请使用 enumerate 输出列表元素和序号(序号从 100 开始)

    >>> for index,key in enumerate(li,100):
    ...     print(index,key)
    ... 
    100 alex
    101 eric
    102 rain
    
    

    l. 请使用 for 循环输出列表的所有元素

    >>> for i in li:
    ...     print(i)
    ...
    rain
    eric
    alex
    

    23、写代码,有如下列表,请按照功能要求实现每一个功能 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
    a. 请输出 “Kelly”

    >>> li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
    >>> li[2][1][1]
    'kelly
    

    b. 请使用索引找到 'all' 元素并将其修改为 “ALL”

    >>> li[2][2] = "ALL"
    >>> print(li)
    ['hello', 'seven', ['mon', ['h', 'kelly'], 'ALL'], 123, 446]
    

    24、写代码,有如下元组,按照要求实现每一个功能 tu = ('alex', 'eric', 'rain')

    a. 计算元组长度并输出
    
    >>> tu = ('alex', 'eric', 'rain')
    >>> len(tu)
    3
    
    b. 获取元组的第 2 个元素,并输出
    >>> tu[1]
    'eric'
    
    c. 获取元组的第 1-2 个元素,并输出
    >>> tu[0:2]
    ('alex', 'eric')
    
    d. 请使用 for 输出元组的元素
    >>> for i in tu:
    ...     print(i)
    ...
    alex
    eric
    rain
    
    e. 请使用 for、len、range 输出元组的索引
    >>> for i in range(len(tu)):
    ...     print(i)
    ...
    0
    1
    2
    
    
    f. 请使用 enumerate 输出元祖元素和序号(序号从 10 开始)
    
    >>> for index,key in enumerate(tu):
    ...     print(index,key)
    ...
    0 alex
    1 eric
    2 rain
    

    25、有如下变量,请实现要求的功能 tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])

    a. 讲述元祖的特性
        除了元素不能修改外,其他和列表一样
    b. 请问 tu 变量中的第一个元素 “alex” 是否可被修改?
        不能
    c. 请问 tu 变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
       k2是列表,可以被修改,
       >>> print(tu[1][2]["k2"].append("server"))
        None
        >>> print(tu[1][2]["k2"])
        ['age', 'name', 'server']
    d. 请问 tu 变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
        k3是元组
        不能被修改
    

    26、字典 dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}

    a. 请循环输出所有的 key
    >>> for i in dic:
    ...     print(i)
    ...
    k3
    k1
    k2
    b. 请循环输出所有的 value
    
    >>> for i in dic:
    ...     print(dic[i])
    ...
    [11, 22, 33]
    v1
    v2
    
    c. 请循环输出所有的 key 和 value
    >>> dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
    >>> for i in dic.items():
    ...     print(i)
    ...
    ('k3', [11, 22, 33])
    ('k1', 'v1')
    ('k2', 'v2'
    
    d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
    >>> dic["k4"]= "v4"
    >>> print(dic)
    {'k4': 'v4', 'k3': [11, 22, 33], 'k1': 'v1', 'k2': 'v2'}
    
    
    e. 请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典
    >>> dic["k1"]="alex"
    >>> print(dic["k1"])
    alex
    
    
    f. 请在 k3 对应的值中追加一个元素 44,输出修改后的字典
    >>> dic["k3"].append("44")
    >>> print(dic["k3"])
    [11, 22, 33, '44']
    
    g. 请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典
    >>> dic["k3"].insert(1,"18")
    >>> print(dic["k3"])
    [11, '18', 22, 33, '44']
    

    27、转换

    a. 将字符串 s = "alex" 转换成列表
    >>> list(s)
    
    b. 将字符串 s = "alex" 转换成元祖
    >>>tuple(s)
    b. 将列表 li = ["alex", "seven"] 转换成元组
    >>>tuple(li)
    c. 将元祖 tu = ('Alex', "seven") 转换成列表
    >>>list(tu)
    d. 将列表 li = ["alex", "seven"] 转换成字典且字典的 key 按照 10 开始向后递增
    
    li = ["alex","seven"]
    dic = {}
    for i,v in enumerate(li,10):
        dic.setdefault(i,v)
        print(dic)
    

    27、转码 n = "老男孩"

    a. 将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8 编码字符串,再输出
    print(n.encode(encoding="utf-8"))
    执行结果
    b'\xe8\x80\x81\xe7\x94\xb7\xe5\xad\xa9'
    print("\xe8\x80\x81\xe7\x94\xb7\xe5\xad\xa9".encode(encoding="utf-8"))
    执行结果
    b'\xc3\xa8\xc2\x80\xc2\x81\xc3\xa7\xc2\x94\xc2\xb7\xc3\xa5\xc2\xad\xc2\xa9'
    
    b. 将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出
    print(n.encode(encoding="gbk"))
    执行结果
    b'\xc0\xcf\xc4\xd0\xba\xa2'
    print("\xc0\xcf\xc4\xd0\xba\xa2".encode(encoding="gbk"))
    执行结果
    UnicodeEncodeError: 'gbk' codec can't encode character '\xc0' in position 0: illegal multibyte sequence
    

    28、求 1-100 内的所有数的和

    #!/usr/bin/env python
    sum = 0
    for i in range(101):
    	sum += i
    print(sum)
    

    29、元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90],
    将所有大于 66 的值保存至字典的第一个 key 中,
    将小于 66 的值保存至第二个 key 的值中。 即: {'k1': 大于 66 的所有值, 'k2': 小于 66 的所有值}

    #!/usr/bin/env python
    d1 = {"k1":[],"k2":[]}
    li = [11,22,33,44,55,66,77,88,99,90]
    for i in li:
    	if i > 66:
    		d1["k1"].append(i)
    	else:
    		d1["k2"].append(i)
    print(d1)
    

    30、购物车 功能要求: 要求用户输入总资产,例如:2000 显示商品列表,让用户根据序号选择商品,加入购物车 购买,
    如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
    goods = [ {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998}, ]

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    shopping_car = {}
    goods = [ {"name": "电脑", "price": 1999},
                {"name": "鼠标", "price": 10},
                {"name": "游艇", "price": 20},
                {"name": "美女", "price": 998}, ]
    
    print("---------------欢迎光临本商场-----------------------")
    salary = int(input("input your salary:"))
    
    while True:
        index = 0
        for product in goods:
            print(index,product)
            index += 1
    
        choice = input("请输入选择的商品序号:").strip()   #输入商品序号,去除空格
        if choice.isdigit():    #判断输入的序号是否是数字
            choice=int(choice)
            if choice >=0 and choice < len(goods): #判断输入数字是否在产品列表范围内
                product = goods[choice]                #选择的商品
                if product["price"] <= salary:    #买的起
                    if product["name"] in shopping_car:
                        shopping_car[product["name"]]["price"] += 1
                    else:
                        shopping_car[product["name"]] = [product["price"],1]
                    salary -= product["price"]
                    print("您购物车里添加了" + product["name"] + "余额是:" + str(salary))
                else:
                    print("您的余额不足,请选择其他便宜的商品!!")
            else:
                print("您输入的商品序号不存在,请重新选择!!")
    
        elif choice == "q":
            print("------------已购买商品----------")
            id_counter = 1
            total_cost = 0
            print("ID     商品        数量       单价      总价")
            for key in shopping_car:    #循环所有的购物车列表
                print("%s%10s%10s%10s%10s"   %(id_counter,
                      key,
                      shopping_car[key][1],
                      shopping_car[key][0],
                      shopping_car[key][1]*shopping_car[key][0]))
                id_counter +=1
                total_cost += shopping_car[key][1]*shopping_car[key][0]
            print("总花费为:"+str(total_cost))
            print("余额为:"+ str(salary))
            break
        else:
            print("无此选项")
    
  • 相关阅读:
    【Android】6.3 ProgressDialog
    【Android】6.2 AlertDialog(警告对话框)
    【Android】6.1 Toast(信息提示框)
    【Android】6.0 第6章 对话框--本章示例主界面
    【Android】5.8 滑动条(SeekBar)
    Storm Trident API
    Storm Trident状态
    Storm Trident详解
    Storm的并行度
    StormUI详解
  • 原文地址:https://www.cnblogs.com/baomanji/p/6652867.html
Copyright © 2011-2022 走看看