python面试_总结02,,- 代码题1、创建一


- 代码题

1、创建一个函数,接收一个字符串参数,判断其做为Python标识符是否合法。

具体要求:

如果合法则输出 True,否则输出 False。如果该字符串与Python内置的关键字,或Bifs冲突,则打印‘conflict‘注: Python标识符的规则,关键字和Bifs可搜索得到
import keyword, stringprint(keyword.kwlist)print()print(string.ascii_letters)print()print(string.digits)
[‘False‘, ‘None‘, ‘True‘, ‘and‘, ‘as‘, ‘assert‘, ‘async‘, ‘await‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, 
‘except‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘nonlocal‘, ‘not‘, ‘or‘, ‘pass‘, ‘raise‘,
‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

import keyword, stringdef Identifier(s):    kw = keyword.kwlist # 内置关键字    # 请用if-else完成检测,打印conflict或者False    # your code here        # 标识符命名规范    # 1.数字,下划线,字母构成    # 2.避开关键字,这里s != kw    # 3.不能用数字开头        # 不能是关键字    if s in kw:        print(s, "标识符不能是关键字")        return False    # 开头必须是字母或者下划线    elif s[0] == "_" or s[0] in string.ascii_letters:        # 除开头以外,必须是数字+下划线+字母        for i in s[1:]:            if (i == "_") or (i in string.digits) or (i in string.ascii_letters):                pass            else:                print(s, "既不是关键字,开头也合法,但是后面有非法字符")                return False        print(s, "合法的标识符")        return True    else:        print(s, "不是关键字,开头已经不合法(后面不晓得)")        return False    print("01", Identifier("list"))print("02", Identifier("abc#"))print("03",Identifier("1a"))
list 合法的标识符01 Trueabc# 既不是关键字,开头也合法,但是后面有非法字符02 False1a 不是关键字,开头已经不合法(后面不晓得)03 False

2、编写一个函数,能生成包含20个随机整数的列表,然后将前10个元素升序排列,后10个元素降序排列,并分别打印输出

提示:本题考察对列表的切片和排序操作,注意切片下标。

import randomdef sort2part():    # 用random生成20个随机数并完成本题要求    # your code here    # 创建一个列表用于保存随机数    total_list = []    list_asc = []    list_dec = []    # 1、生成20个随机数    for i in range(20):        total_list.append(random.randint(1, 20))    print("生成的随机数列表是这个样子:", total_list)    # 2、对列表进行切片    list_asc = total_list[:10]    list_dec = total_list[10:]    print("切片后前10的列表:", list_asc)    print("切片后后10的列表:", list_dec)        assert len(list_asc) + len(list_dec) == len(total_list), "长度需要满足一致"        # 3、分别进行排序    list_asc = sorted(list_asc)    list_dec = sorted(list_dec, reverse=True)    print("升序后前10的列表:", list_asc)    print("降序后后10的列表:", list_dec)    return sort2part()

3、有一分数序列为:2/1,3/2,5/3,8/5,13/8,21/13, 请使用Python代码生成,并打印该数列的前30(演示代码取5项)项,并求和返回

提示:观察分数的分子和分母,每1项都和前2项有关系,也可检索“斐波那契数列”

# 显示分数的包import fractionsfrom functools import reducedef fab(max_num):     # 完成分子分母的生成并计算求和返回结果    # your code here        # 创建列表保存数据    _list = []        # 1、首先生成斐波那契数列    a = 1  # 注意这里a从1开始    b = 1    for i in range(max_num):        # a是分母,b是分子        a, b = b, a + b        ‘‘‘        上式等同于下面3式:        temp = b        b = a + b        a = temp        ‘‘‘        # print("a = ", a, "b = ", b)                # 2、生成分数        _list.append(fractions.Fraction(b, a))        # _list.append(b / a)    print("看一眼生成的列表长啥样:", _list)    # 分数要遍历才能打印...    for elm in _list:        print(elm)    assert len(_list) == max_num, "长度一致"        # 3、求前30项的和    sum_ = reduce(lambda x, y: x + y, _list)    return sum_print("该数列的前5项和: ",fab(5))
看一眼生成的列表长啥样: [Fraction(2, 1), Fraction(3, 2), Fraction(5, 3), Fraction(8, 5), Fraction(13, 8)]23/25/38/513/8该数列的前5项和:  1007/120


4、BMI编写

身体质量指数(BMI)是根据人的体重和身高计算得出的一个数字,BMI是可靠的身体肥胖指标,其计算公式:BMI = Weight / High2,其中体重单位为公斤,身高单位为米。

计算公式为:BMI=体重(kg)÷身高2(m)

提示用户输入体重(kg)和身高的数字(m)(注意单位),然后计算BMI。

根据BMI指数范围,定义当前健康状态。BMI指数在18至25之间定义为健康的标准体重, 小于该范围定义为偏瘦,超过该范围定义为偏重。

将BMI指数和其所代表状态输出

weight = float(input(‘请输入您的体重:‘))high = float(input(‘请输入您的身高:‘))# 完成BMI计算并返回结果提示信息# your code herehigh = high / 100BMI = weight / (high ** 2)if 18 <= BMI <= 25:    print("您的身体质量指数是:%.2f, 很健康哦" % BMI)elif BMI < 18:    print("您的身体质量指数是:%.2f, 有些偏瘦哦" % BMI)else:    print("您的身体质量指数是:%.2f, 你这个胖纸" % BMI)
请输入您的体重:65请输入您的身高:173您的身体质量指数是:21.72, 很健康哦

5、字符统计

创建一个函数,接收字符串输入,分别统计出其中英文字母、空格、数字和其它字符的个数后打印。提示:ord(‘a‘) 能将字符 ‘a‘ 转化为 ASCII 码表上对应的数值,例如,空格为32数字 0-9 对应的码值为 48-57大写字母 A-Z 对应 65-90小写字母 a-z 对应 97-122比122高的都是其它。
def str_count(s):      # 完成对应要求的统计,并返回对应的数量    # your code here    # 初始化计数变量    count_s, count_z, count_a, count_o = 0, 0, 0, 0    for i in s:        # 得到对应ASCII码的数值        num_asc = ord(i)        if num_asc == 32:            count_s += 1        elif 48 <= num_asc <= 57:            count_z += 1        elif 65 <= num_asc <= 90 or 97 <= num_asc <= 122:            count_a += 1        elif num_asc > 122:            count_o += 1#     assert (count_s + count_z + count_a + count_o) == total_num, "最终个数相符"        print("空格个数:%d个" % count_s)      print("数字个数:%d个" % count_z)    print("英文字母个数:%d个" % count_a)    print("其他字符个数:%d个" % count_o)      str_count("我是xiao ming ming, 今年27岁")
空格个数:3个数字个数:2个英文字母个数:12个其他字符个数:5个

6、创建一个函数,可以将去除给定列表中中相邻且重复的元素(只保留一个)后,打印输出结果。

说明输入参数为 l1 = [1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13]操作后,保证原有整体排序不变,仅处理相邻且重复的元素请勿使用set。
def remove_same(ll):    # 完成题目要求的任务,并返回结果    # your code here    # 逆序,这样就不会出现下标溢出的情况    for i in range(len(ll) - 1, 0, -1):        # print("现在到了第%d步" % i)        print(ll)        if ll[i] == ll[i-1]:            # 删除相邻且重复的元素            del ll[i]    return ll    lst = [4,4,5,6,5,6,6,8,7,8,12,12]# lst = [1,1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13]# lst1 = [1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13, 4, 8, 4, 12, 13, 13, 17, 3, 3, 3]print(remove_same(lst))
[4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12, 12][4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12][4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12][4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12][4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12][4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12][4, 4, 5, 6, 5, 6, 8, 7, 8, 12][4, 4, 5, 6, 5, 6, 8, 7, 8, 12][4, 4, 5, 6, 5, 6, 8, 7, 8, 12][4, 4, 5, 6, 5, 6, 8, 7, 8, 12][4, 4, 5, 6, 5, 6, 8, 7, 8, 12][4, 5, 6, 5, 6, 8, 7, 8, 12]

7、创建一个函数,接收一个由整数组成的列表(需对输入列表做检查,长度最少为2, 数据类型为整型),并检验后下列条件后输出:

如列表是升序排列的,则输出"ASC";如列表是降序排列的,则输出"DESC";如列表无序,则输出"WRONG"。
def check_data(l):    # 请完成题目要求的任务,并输出对应信息    # your code here    # 得到列表的总长度    count = len(l)    if count < 2:        print("长度不够,短拒")        return None    # 判断数据类型是否位int    for i in range(count):        if not isinstance(l[i], int):            print("数据类型有非int型")            return None    # 判断是否是升序    if sorted(l) == l:        print("ASC")    # 判断是否降序    elif sorted(l, reverse=True) == l:        print("DESC")    # 无序    else:        print("WRONG")    check_data([1])check_data([1,"2"])check_data([1,2,3,4])check_data([4,3,2,1])check_data([1,3,2,4])
长度不够,短拒数据类型有非int型ASCDESCWRONG













python面试_总结02

评论关闭