python123 从入门到精通挑战台

1.语言基础

1.6 map函数()

map是python内置函数,会根据提供的函数对指定的序列做映射
map()函数的格式是:
map(function,iterable,...)
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。

把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。

map函数实例

当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:
map函数里面的函数参数也可以添加lambda函数()

#获取用户输入的整数n,
#输出所有小于 n 的非负整数 i 的平方( 0 <= i < n )。
n = eval(input())
print(list(map(lambda x: x * x, range(n))))

通过map还可以实现类型转换
将元组转换为list:

map(int,(1,2,3))
# 结果如下:
[1,2,3]

将字符串转换为list:

map(int,'1234')
# 结果如下:
[1,2,3,4]

`提取字典中的key,并将结果放在一个list中:

map(int,{1:2,2:3,3:4})
# 结果如下
[1,2,3]

1.7 (函数)类型建议符

def twoSum(num1: int, num2: int=100) -> int:

函数参数中的冒号是参数的类型建议符,告诉函数调用者希望传入的实参的类型。函数后面跟着的箭头是函数返回值的类型建议符,用来说明该函数返回的值是什么类型。

1.8 round函数

round(x,[,n])
#x为数字表达式,n为小数点后保留几位数,方括号表示默认为零

1.9 f-string

f-strings 提供了一种简洁方便的方式来将 Python 表达式嵌入到字符串文字中以进行格式化。

 year = 2016
 event = 'Referendum'
f'Results of the {year} {event}'
# 输出结果:'Results of the 2016 Referendum'

1.11 python enumerate用法总结

函数说明:

  1. enumerate在字典上是枚举、列举的意思
  2. 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
  3. enumerate多用于在for循环中得到计数

对一个列表,既要遍历索引又要遍历元素时

list1 = ["这", "是", "一个", "测试"]
for i in range (len(list1)):
    print i ,list1[i]

enumerate()方法:

list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1):
    print index, item
>>>
012 一个
3 测试

2.基础数据结构

2.6 编写一个 Python 程序来接受用户输入的文件名,然后打印文件名和扩展名。

def extract_extension(file_name: str) -> str:
    """提取文件扩展名称"""
    extension_name = file_name.split(".")[-1]
    return extension_name

text = input()
print(f"输入文件名:{text} 文件的扩展名是:{extract_extension(text)}")

2.7 编写一个 Python 程序打印 az 和 AZ 的英文字母。

from string import ascii_lowercase
from string import ascii_uppercase

for lowercase, uppercase in zip(ascii_lowercase, ascii_uppercase):
    print(f"| {lowercase} - {uppercase} |")
#zip 使用压缩文件遍历输出

2.8 python字符串原地逆转

text = input()
print(text[::-1])

2.9 字符处理

text = text.strip()  # 去除前后空格

text = " blisdd,bsDisd,SDefs,ahdhjlid,sEfds "

text = text.strip()  # 去除前后空格

text_lst = text.split(",")
count = 0
for i in text_lst:
    if i[0] == "b" and i[-1] == "d" and "is" in i:
        print(f"将符合条件的字符串转化为小写 {i.lower()}")
        print(f"将符合条件的字符串转化为大写 {i.upper()}")
        count += 1
print(f"字符串中共有符合条件的字符串 {count} 个")

3.结构

3.15

isalpha():  # isalpha() 方法检测字符串是否只由字母组成
isdigit():  # 如果 string 只包含数字则返回 True 否则返回 False
isspace():  # 如果 string 中只包含空格,则返回 True,否则返回 False.

3.19

	try:
        C = (eval(TempStr[0:-1]) - 32) / 1.8
        print("{:.2f}C".format(C))
    except SyntaxError:
        print("输入格式错误")

#异常输入
try:
    s = "零一二三四五六七八九"
    i = eval(input())
    print(s[i])
except IndexError:
    print("请输入0~9之间的数")
except TypeError:
    print("请输入整数")
except NameError:
    print("请输入正确的名称")

4.4素数判断

def is_prime(n: int) -> bool:
    """素数判断"""
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    else:
        return True
      
#以下是main函数找出最大的素数
def main(n: int) -> list:
    """统计"""
    lst = []
    count = 0
    for i in range(n, 1, -1):
        if is_prime(i):
            lst.insert(0, i)
            count += 1
        if count == 10:
            return lst

4.4 Python 默认的最大递归深度为 998,在有些情况下是不够的,修改一个 Python 递归函数程序,解决最大递归深度问题。

sys.setrecursionlimit(limit)

    #将 Python 解释器堆栈的最大深度设置为 limit。此限制可防止无限递归导致的 C 堆栈溢出和 Python 崩溃。
    
    #不同平台所允许的最高限值不同。当用户有需要深度递归的程序且平台支持更高的限值,可能就需要调高限值。进行该操作需要谨慎,因为过高的限值可能会导致崩溃。
    
    #如果新的限值低于当前的递归深度,将抛出 RecursionError 异常。
    
    #在 3.5.1 版更改: 如果新的限值低于当前的递归深度,现在将抛出 RecursionError 异常。
    #用斐波那契数列测试递归更改
    import sys

sys.setrecursionlimit(2000)


def fib(n):
    if n == 1:
        return 1
    else:
        return fib(n - 1) + n


print(fib(1000))

4.4 Python ord()是什么?

ord()函数主要用来返回对应字符的ascii码

4.15 编写一个 Python 标签装饰器函数,为hello()函数添加

标签和

标签:

def make_p(fn):
    """段落"""
    def wrapped():
        return "<p>" + fn() + "</p>"
    return wrapped


def make_h1(fn):
    """标题"""
    def wrapped():
        return "<h1>" + fn() + "</h1>"
    return wrapped


@make_p
@make_h1
def hello():
    return "hello world"


print(hello())

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值