1. Escreva uma função para encontrar a soma de 1 + 2 + 3 + ... N
# 不可使用sum函数
# def get_sum(n):
# if n == 1:
# return 1
# return n + get_sum(n - 1)
def get_sum(n):
s = 0
for i in range(1,n+1):
s += i
return s
print(get_sum(100))# 5050
# print(sum(range(101)))# 5050 我只是演示
2. Escreva uma função para encontrar o valor máximo entre vários números
Como mencionado anteriormente, parâmetros posicionais variáveis, quando muitos valores são passados para a função, os parâmetros posicionais extras são armazenados em arg na forma de tuplas
# 不得使用max函数
def get_max(*args):
x = args[0]
for arg in args:
if arg > x: # 只要有比x大的数,就将这个数赋值给x
x = arg
return x
print(get_max(1, 2, 4, 5, 6, 77, 9, 5))# 77
3. Escreva uma função para realizar a função de lançar os dados e imprima os pontos e a soma de N dados
O módulo aleatório é usado
aqui.O módulo aleatório é usado para gerar números aleatórios, seleção aleatória e outras operações.Aqui usaremos o método randint para gerar um inteiro aleatório entre [n, m], que são todos intervalos fechados.
# 由于是随机数我就不写出答案了,
# 不过大家可以把每一次的point打印一下,验证一下
def get_count(n):
s = 0
for i in range(n):
point = random.randint(1, 6)
# print(point)
s += point
return s
print(get_count(6))
4. Escreva uma função para trocar a chave e o valor do dicionário especificado
Já falei sobre os fundamentos da função. Ao chamar uma função, os parâmetros extras da palavra-chave serão salvos no kwargs na forma de um dicionário. Também mencionei o método do item do dicionário. Se você ainda não sabe o que é, Você pode chamar esse método diretamente com um dicionário e imprimi-lo.
def swap(**kwargs):
# new_dict={}
# for key in kwargs:
# new_dict[kwargs[key]]=key
# return new_dict
return {
x:y for y,x in kwargs.items()}# 字典推导式
print(swap(a=1, b=2, c=3))# {1: 'a', 2: 'b', 3: 'c'}
5. Escreva uma função para extrair todas as letras na string especificada e, em seguida, junte-as para produzir uma nova string
# 例如:传入' 12a&bc12d-+' -->' abcd'
def get_ABC(word):
new_str = ''
for x in word:
if x.isalpha():
new_str += x
return new_str
print(get_ABC('hello456world'))# helloworld
6. Escreva uma função para encontrar a média de vários números
def get_average(*args):
i = 0
for arg in args:
i += arg
return i / len(args)
print(get_average(10, 20, 30, 40))# 25.0
7. Escreva uma função, o padrão é encontrar o fatorial de 10, você também pode encontrar o fatorial de outros números
# 简易少使用递归
# def get_factorials(x=10):
# if x == 1:
# return 1
# return x * get_factorials(x - 1)
def get_factorials(n=10):
s = 1
for i in range(1,n+1):
s *= i
return s
print(get_factorials(5))# 120
8. Escreva sua própria função de capitalização que pode transformar a primeira letra da string especificada em letras maiúsculas
# 例如: 'abc' -> ' Abc'' 12asd' --> ' 12asd'
def my_capitallize(word):
i = word[0]
if 'a' <= i <= 'z':
new_word = word[1:]
i = i.upper()
return i + new_word
return word
print(my_capitallize('123words'))# 123words
print(my_capitallize('abc'))# Abc
9. Escreva sua própria função endswith para determinar se uma string termina com uma string especificada
def my_endswith(word, factor):
# 直接切长度为需要判断字符串长度的最后几个字符
return word[-len(factor):] == factor
print(my_endswith('123aba', 'b'))# False
print(my_endswith('123aba', 'ba'))# True
10. Escreva sua própria função isdigit function para determinar se uma string consiste em todos os números
def my_isdigit(words):
for word in words:
if not'0'<=word<='9':
return False
return True
print(my_isdigit('12a'))# False
print(my_isdigit('12'))# True
11. Escreva sua própria função superior para transformar todas as letras minúsculas da string em maiúsculas
def my_upper(old_str):
# a==>97,A==>65
new_str=''
for i in old_str:
if 'a'<=i<='z':
i=chr(ord(i)-32)# 先转编码值再转字符
new_str += i
else:
new_str += i
return new_str
print(my_upper('123hello'))# 123HELLO
12. Escreva sua própria função rjust, especifique o comprimento ao criar um comprimento de string, a string original é alinhada à direita na nova string e a parte restante é preenchida com os caracteres especificados
def my_rjust(word,long,fillchar):# 原字符串,长度,填充字符
long_char = fillchar*(long-len(word))
return long_char + word
print(my_rjust('abc', 7,'!'))# !!!!abc
13. Escreva sua própria função de índice para imprimir todos os subscritos do elemento especificado na lista especificada. Se não houver nenhum elemento especificado na lista, retorne -1
def my_index(lists,m):
if m in lists:
for i,j in enumerate(lists):# 带下表的遍历
if j == m:
print(i,end=',')
print()
else:
print('-1')
my_index([1, 2, 45, 'abc', 1, '你好', 1, 0],1) # 0,4,6,
my_index(['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'],'赵云') # 0,4
my_index(['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'],'关羽') # -1
14. Escreva sua própria função len para contar o número de elementos de sequência especificados
def my_len(sequence):
count = 0
for x in sequence:
count += 1
return count
b = my_len('hello w')
c = my_len([1, 3, 5, 6])
d = my_len((1, 34, 'a', 45, 'bbb'))
print(b,c,d) # 7 4 5
15. Escreva uma função que implemente a operação in e determine se o elemento especificado existe na sequência especificada
def my_in(a,b):
for x in a:
if x == b:
return True
return False
print(my_in((12, 90, 'abc'), '90'))# False
print(my_in((12, 90, 'abc'), 90))# True
16. Escreva sua própria função de substituição para converter a string antiga na string especificada para a nova string especificada
def my_replace(all_str, old_str, new_str):
# 先将原字符串按旧字符串分割成一个列表
# 再用新字符串讲这个列表进行分割
return new_str.join(all_str.split(old_str))
print(my_replace('how do you do', 'o', '*'))# h*w d* y*u d*
17. Escreva sua própria função max para obter o valor máximo dos elementos na sequência especificada. Se a sequência for um dicionário, use o valor máximo do dicionário
def my_max(seq):
# if type(seq) == dict:
if isinstance(seq,dict):#看对象是否通过dict类创建出来的
seq = list(seq.values())
x = seq[0]
for i in seq:
if i > x:
x = i
return x
x = my_max([-7, -12, -1, -9])
y = my_max('abcdpzasdz')
z = my_max({
'小明':90, '张三': 76, '路飞':30, '小花': 98})
print(x,y,z)# -1 z 98