Python研究ノート(3):プロセス制御の章の演習

1. whileループを使用して、リストとタプルをトラバースします

リストとタプルの要素にはインデックスが付けられているため、リストとタプルのすべての要素は、whileループ、リスト、およびタプルのインデックスを通過できます。

1.1。whileループを使用してタプルをトラバースします。コードは、次のとおりです。

'''
while循环遍历元组
'''
# 定义一个元组
my_tuple = ('Java', 'Python', 'PHP')
i = 0
while i < len(my_tuple):
    print("第", (i + 1), "个元素:", my_tuple[i])
    i += 1

1.2.whileループを使用してリストをトラバースします

要件:整数リストの要素の分類を実現し、3で除算できるものを1つのリストに入れ、3と1で除算できるものを別のリストに入れ、3で除算できるものと3番目のリストに2

コードは次のとおりです。

'''
while循环遍历列表
实现对一个整数列表的元素进行分类,
能整除3的放入一个列表中;
除以3余1的放入另一个列表中;
除以3余2的放入第三个列表中
'''
# 定义一个列表
my_list = [12, 45, 34, 13, 100, 24, 56, 74, 109]
a_list = [] # 保存能整除3的元素
b_list = [] # 保存除以3余1的元素
c_list = [] # 保存除以3余2的元素

# 第一种方法:
# for i in range(len(my_list)):
#     if my_list[i] % 3 == 0:
#         a_list.append(my_list[i])
#     elif my_list[i] % 3 == 1:
#         b_list.append(my_list[i])
#     elif my_list[i] % 3 == 2:
#         c_list.append(my_list[i])

# 第二种方法:
while len(my_list) >0:
    # 弹出最后一个元素
    ele = my_list.pop();
    if ele % 3 ==0:
        a_list.append(ele)
    elif ele % 3 == 1:
        b_list.append(ele)
    elif ele % 3 ==2:
        c_list.append(ele)

print("a_list:", a_list)
print("b_list:", b_list)
print("c_list:", c_list)

2. for-inループを使用して、リストとタプルをトラバースします

for-inループを使用して、範囲、リスト、タプル、辞書などの反復可能なオブジェクトに含まれる要素をトラバースできます。

2.1.for-inループトラバーサル範囲

要件:for-inループを使用して、指定された整数の階乗を計算します。コードは次のとおりです。

'''
for-in循环可用于遍历范围。
例如:使用for-in循环来计算指定整数的阶乘。
'''
max = int(input("请输入你想计算的阶乘:"))
result = 1
for i in range(1, max+1):
    result *= i

print(max, "的阶乘=", result)

2.2。タプルをトラバースするためのfor-inループ

コードは次のとおりです。

'''
使用for-in循环遍历元组
'''
# 第一种方式:
my_tuple = ('java', 'python', 'php')
# for i in my_tuple:
#     print("当前元素是:", i)

# 第二种方式:
for i in range(len(my_tuple)):
    print("当前元素是:", my_tuple[i])

2.3。リストをトラバースするためのfor-inループ

要件:リスト内のすべての数値要素の合計と平均値を計算します。コードは次のとおりです。

'''
使用for-in循环遍历列表
需求:计算列表中所有数值元素的总和、平均值。
需要用到isInstance()函数:该函数用于判断某个变量是否为指定类型的实例,前一个参数是要判断的变量,后一个参数是类型
'''
my_list = [12, 45, 3.4, 13, 'a', 4, 56, 'crazyit', 109.5]
my_sum = 0
my_count = 0

for i in my_list:
    if isinstance(i, int) or isinstance(i, float):
        # 如果该元素是数值元素,则累加
        my_sum += i
        # 如果该元素是数值元素,则数量加1
        my_count += 1

print("总和:", my_sum)
print("平均值:", my_sum/my_count)

3.for-inループを使用して辞書をトラバースします

辞書には、次の3つの方法が含まれています。

  • items():ディクショナリ内のすべてのキーと値のペアのリストを返します。
  • keys():ディクショナリ内のすべてのキーのリストを返します。
  • values():辞書内のすべての値のリストを返します。

サンプルコードは次のとおりです。

'''
使用for-in循环遍历字典
'''
my_dict = {"语文": 89, "数学": 92, "英语": 80}

# 第一种方式:通过键-值对来遍历字典
# for key, value in my_dict.items():
#     print("key:", key)
#     print("value:", value)

# 第二种方式:通过key来遍历字典
# for key in my_dict.keys():
#     print(key, ":", my_dict[key])

# 第三种方式:通过value来遍历字典
for value in my_dict.values():
    print("value:", value)

要件:リスト内の各要素の出現回数をカウントします。コードは次のとおりです。

'''
统计列表中各元素出现的次数
'''
my_list = ['hello', 2, 4, 'hello', 4, 2.5, 4, 2.5]

# 定义一个空字典
my_dict = {}
for i in my_list:
    # 如果字典中包含i代表的key
    if i in my_dict:
        # 则将i元素出现的次数加1
        my_dict[i] += 1
    else:
        my_dict[i] = 1

# 遍历my_dict,打印出各元素出现的次数
for key, value in my_dict.items():
    print("%s出现的次数是%d" %(key, value))

4.章の演習

4.1。ループを使用して、ナインナインナインの九九を出力し、次の結果を出力します。

1 x 1 = 1 
1 x 2 = 2 2 x 2 = 4 
1 x 3 = 3 2 x 3 = 6 3 x 3 = 9 
... 
1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81

コードは次のとおりです。
for i in range(1, 10):
    for j in range(1, i + 1):
        print("%d x %d =" %(j, i), j * i, end="\t")
    print()

4.2。ループを使用して、二等辺三角形を出力します。たとえば、4の場合、出力は次のようになります。

   * 
  *** 
 ***** 
*******

コードは次のとおりです。

num = int(input("请输入一个整数:"))
for i in range(1, num + 1):
    for j in range(1, num + 1 - i):
        print(" ", end="")
    for k in range(1, 2 * i):
        print("*", end="")
    print()

4.3。ユーザーが自分のスコアを入力すると、プログラムはスコアのタイプを自動的に決定します。90ポイント以上のスコアはAで表され、80〜89ポイントはBで表され、70〜79ポイントはCで表されます。 Dで表されます。コードは次のとおりです。

'''
3.用户输入自己的成绩,程序会自动判断该成绩的类型:
成绩≥90分用A表示,80~89分用B表示,70~79分用C表示,其他的用D表示。
'''
score = int(input("请输入自己的成绩:"))
if score >= 90:
    print("A")
elif score >= 80 and score <= 89:
    print("B")
elif score >= 70 and score <= 79:
    print("C")
else:
    print("D")

4.4。101から200までの素数の数を決定し、すべての素数を出力します。コードは次のとおりです。

'''
4.判断101~200之间有多少个素数,并输出所有的质数
'''
count = 0 # 统计素数的个数
my_list = [] # 用来保存所有的素数
for i in range(101, 201):
    j = 2;
    while j < i:
        if i % j == 0:
            break
        else:
            j += 1
    else:
        count += 1
        my_list.append(i)

print("一共有%d个素数" %count)
print("素数:", my_list)

4.5。すべての「水仙番号」を印刷します。いわゆる「水仙の数」とは、立方体の合計が数自体に等しい3桁の数を指します。例:153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3であるため、153は水仙の数です。コードは次のとおりです。

'''
5.打印出所有的”水仙花数“。所谓”水仙花数“,是指一个三位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3
'''
# 定义一个列表,用来保存所有的水仙花数
my_list = []
# 统计水仙花的个数
count = 0
for i in range(100, 1000):
    # 百位数
    m = int(i/100)
    # 十位数
    n = int((i-m*100)/10)
    # 个位数
    k = int(i-m*100-n*10)
    if i == (m * m * m + n * n * n + k * k * k):
        count += 1
        my_list.append(i)

# 输出所有的水仙花数
print("共有%d个水仙花" %count)
print(my_list)

 

おすすめ

転載: blog.csdn.net/weixin_44679832/article/details/113824327