num = -123 first_char = '' ifnotstr(num)[0].isdigit(): first_char = str(num)[0] other = str(num)[1:][::-1] else: other = str(num)[::-1] results = int(first_char+other) print(results, type(results))
-321 <class 'int'>
设计实现遍历目录与子目录,抓取.pyc文件
使用os.walk遍历目录
1 2 3 4 5 6 7 8 9 10
import os # 存放pyc pyc = [] # 要遍历的目录 path = 'F:/projects/flask_spider/app' for dirpath, dirnames, filenames in os.walk(path): for file in filenames: if file.endswith('.pyc'): pyc.append(os.path.join(dirpath, file)) pyc
lis = [1, 2, 3, 4, 5, 6, 7, 8, 9] for i in lis[::-1]: lis.remove(i) print(lis)
[]
字符串的操作题目
全字母短句 PANGRAM 是包含所有英文字母的句子,比如:A QUICK BROWN FOX JUMPS OVER THE LAZY DOG. 定义并实现一个方法 get_missing_letter, 传入一个字符串,返回参数字符串变成一个 PANGRAM 中所缺失的字符。应该忽略传入字符串参数中的大小写,返回应该都是小写字符并按字母顺序排序(请忽略所有非 ACSII 字符)
下面示例是用来解释,双引号不需要考虑:
(0)输入: “A quick brown fox jumps over the lazy dog”
返回: “”
(1)输入: “A slow yellow fox crawls under the proactive dog”
# 待转换的字符串 num_str = '123' # 最终转换结果初始为0 results = 0 # 遍历数字字符串 for num in num_str: # 遍历0-9数字 for i inrange(10): # 比较当前数字,结果x10,加上当前数字即当前已循环的数字 if num == str(i): results = results * 10 +i print(results, type(results))
123 <class 'int'>
利用 ord 函数
1 2 3 4 5 6 7
# 待转换的字符串 num_str = '123' # 最终转换结果初始为0 results = 0 for num in num_str: results = results * 10 + ord(num)-ord('0') print(results, type(results))
123 <class 'int'>
利用 eval 函数
1 2 3 4 5 6 7 8 9
# 待转换的字符串 num_str = '123' # 不让用int,直接用eval就直接转成int了,哈哈哈,面试官要气死 # results = eval(num_str) # 最终转换结果初始为0 results = 0 for num in num_str: results = results *10 + eval(num) print(results, type(results))
data = 26 nums = [2,7,11,15] for i inrange(len(nums)): for j inrange(i+1, len(nums)): if nums[i]+nums[j]==data: print([i, j]) break else: continue break
[2, 3]
统计一个文本中单词频次最高的10个单词?
使用字典记录:key为单词,val为出现次数
1 2 3 4 5 6 7 8 9 10 11
str = 'Hello world Hello China Tony China Shanghai Beijing China Shanghai Shenzhen' str_list = str.split(" ") print(str_list) dic = dict.fromkeys(str_list, 0) for word in str_list: ifnot dic.get(word): dic[word] = 1 else: dic[word] +=1 lis = list(sorted(dic.items(), key=lambda item:item[1], reverse=True)) print(lis)
from collections import Counter str = 'Hello world Hello China Tony China Shanghai Beijing China Shanghai Shenzhen' str_list = str.split(" ") # 获取每个次的排名,出现次数默认从高到低 rank_str = Counter(str_list) print(rank_str) # 取出前三名 print(rank_str.most_common(3))
defmulti(): return [lambda x : i*x for i inrange(4)] print([m(3) for m in multi()])
网友回答:正确答案是[9,9,9,9],而不是[0,3,6,9]产生的原因是Python的闭包的后期绑定导致的,这意味着在闭包 中的变量是在内部函数被调用的时候被查找的,因为,最后函数被调用的时候,for循环已经完成, i 的 值最后是3,因此每一个返回值的i都是3,所以最后的结果是[9,9,9,9]
s = 'absdlfjkasdjfasdfasdfoewirweonmxlfvmljowerjmzxdkdbkshiweruy' results = {} for i in s: if results.get(i): results[i] +=1 else: results[i] = 1 print(results)