Python関数の演習

エラーがあります、指摘することを歓迎します、私は時間内にそれらを修正します、ありがとう

1. 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.複数の数の中から最大値を見つける関数を書く

前述のように、可変位置パラメーターは、多くの値が関数に渡されると、追加の位置パラメーターがタプルの形式でargに格納されます

# 不得使用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.サイコロを振る機能を実現する関数を書いて、N個のサイコロの点と合計を印刷します。

ここでは、ランダムモジュールを使用します。ランダムモジュールは、乱数、ランダム選択、およびその他の操作
を生成するために使用されますここでは、randintメソッドを使用して、すべて閉じた区間である[n、m]間のランダム整数を生成します。

# 由于是随机数我就不写出答案了,
# 不过大家可以把每一次的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.指定された辞書のキーと値を交換する関数を記述します

関数の基本について説明しました。関数を呼び出すと、追加のキーワードパラメータが辞書の形式でkwargsに保存されます。辞書のitemメソッドについても説明しました。それでもわからない場合は、このメソッドは、辞書を使用して直接呼び出して印刷できます。

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.指定した文字列内のすべての文字を抽出し、それらをつなぎ合わせて新しい文字列を生成する関数を記述します

# 例如:传入' 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.複数の数の平均を求める関数を書く

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.関数を記述します。デフォルトでは、10の階乗が検索されます。また、他の数値の階乗も検索できます。

# 简易少使用递归
# 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.指定された文字列の最初の文字を大文字に変換できる独自の大文字化関数を記述します

# 例如: '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.独自のendswith関数を記述して、文字列が指定された文字列で終わるかどうかを判断します

def my_endswith(word, factor):
	# 直接切长度为需要判断字符串长度的最后几个字符
    return word[-len(factor):] == factor
print(my_endswith('123aba', 'b'))# False
print(my_endswith('123aba', 'ba'))# True

10.独自の関数isdigit関数を記述して、文字列がすべての数値で構成されているかどうかを判断します

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.文字列内のすべての小文字を大文字に変換する独自の大文字関数を記述します

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.独自のrjust関数を記述し、文字列の長さを作成するときに長さを指定します。元の文字列は新しい文字列に右揃えで配置され、残りの部分は指定された文字で埋められます。

def my_rjust(word,long,fillchar):# 原字符串,长度,填充字符
    long_char = fillchar*(long-len(word))
    return long_char + word
print(my_rjust('abc', 7,'!'))# !!!!abc

13.指定されたリスト内の指定された要素のすべての添え字を出力する独自のインデックス関数を記述します。リスト内に指定された要素がない場合は、-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.指定されたシーケンス要素の数をカウントする独自のlen関数を作成します

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. in操作を実装する関数を記述し、指定された要素が指定されたシーケンスに存在するかどうかを判別します

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.独自の置換関数を記述して、指定された文字列の古い文字列を指定された新しい文字列に変換します

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.独自のmax関数を記述して、指定されたシーケンスの要素の最大値を取得します。シーケンスが辞書の場合は、辞書の最大値を取得します。

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

すべての運動はさまざまな方法で行うことができます、私はあなたがそれをする方法が私のものよりもさらに美しいと信じています
さあ、退屈ではありますが、学習は長いプロセスですが、そのような少しの幸福の欠如はありません
私はまだその少しの幸せを見つけていませんが、私はあなたと私がそれを見つけることができないと信じています、ハハハ
今日の「円周率」はここにあります、それを好きになることを忘れないでください

おすすめ

転載: blog.csdn.net/hmh4640219/article/details/112322871