浙江大学 Python プログラミング (MOOC) 演習の回答

第一章

7-1 キーボードから2つの数値を入力し、それらの合計を計算して出力する

a=int(input())
b=int(input())
print(a+b)

7-2 キーボードから a、b、c に 3 つの数字を入力し、数式の値に従って出力する

a、b、cの3つの値を同じ行にスペースで区切って順番に入力し、の値b*b-4*a*c

a,b,c=input().split()
a,b,c=int(a),int(b),int(c)
print(b*b-4*a*c)

7-3 アウトプット「人生は短い、Pythonを学ぶ」

print("人生苦短,我学Python")

7-4 Hを書く

* でプログラムを書き、H を出力する

for i in range(1,6):
    if i==3:
        print("*****")
    else:
        print("*   *")

第2章

7-1 計算11 + 12 + 13 + ⋯ + m 11+12+13+\dots+m1 1+1 2+1 3++メートル

正の整数を入力してくださいm ( 20 ≤ m ≤ 100 ) m(20\le m\le100)メートル( 2 0メートル1 0 0 )、計算11 + 12 + 13 + ⋯ + m 11+12+13+\dots+m1 1+1 2+1 3++mの値。
出力形式:「sum=S」「sum=S」
の形式で1行スゥム_ _=S とSSに対応した出力S。 _

m=int(input())
S=0
for i in range(11,m+1):
    S=S+i
print("sum = {}".format(S))

7-2 区分関数の計算

次の区分関数を評価します:
g ( x ) = { 0 x = 0 1 2 xx ! = 0 g(x)=\begin{cases}0\quad x=0\\\frac{1}{2x} \quad x!=0\end{ケース}g ( x )={ 0バツ=02x _1× =0
出力形式:「g(x)=結果」「g(x)=結果」
1行g ( x )=結果形式出力ここxxx結果結果すべて予約済み33 _3位小数。

x=float(input())
if x!=0:
    result=1/(2*x)
else:
    result=0
print("g({0:.3f}) = {1:.3f}".format(x,result))

7-3 段階的な電気料金

家庭用ユーザーの電気料金は 2 つの「はしご」に分けられます: 毎月の電気使用量50 505 0 kwh (50 5050 kwh )、電気料金は0.53 0.530.5 3元/kwh;50以上5050kwh、余剰電力消費分、電気代が○○倍アップX元/kWh。
入力形式:
利用者の月間電力使用量(単位:kWh)と額をスペースで区切られたX値 (単位: 元)。
出力形式:
利用者が支払うべき電気料金(元)を1行で出力し、結果は小数点以下2桁、「コスト=支払うべき電気料金の額」の形式。

power,x=input().split()
power=int(power)
x=float(x)
if power<=50:
    cost=0.53*power
else:
    cost=0.53*50+(power-50)*(x+0.53)
print("cost = {:.2f}".format(cost))

7-4 奇数列の最初の N 個の項目の近似和を求める

シーケンスの最初のNNを計算するN項近似和1 + 1 / 3 + 1 / 5 + ⋯ 1+1/3 + 1/5 + \cdots1+1 / 3+1 / 5+出力形式:「sum≒S」「sum≒S」
による1行スゥム_ _S フォーマット出力近似およびSSS.SS __Sは、数列の合計よりも大きい最小の整数です。

import math
N=int(input())
s=0
for i in range(1,N+1,2):
    a=float(1/i)
    s=s+a
S=math.ceil(s)
print("sum ≈ {}".format(S))

7-5 インターリーブされたシーケンスの最初の N 項の和を求める

インターリーブ シーケンスのフロントNNを計算するN項の合計1 − 2 / 3 + 3 / 5 − 4 / 7 + 5 / 9 − 6 / 11 + ⋯ 1-2/3+3/5-4/7+5/9-6/11+ \ cdots12 / 3+3 / 54 / 7+5 / 96 / 1 1+

N=int(input())
s=0
for i in range(1,N+1):
    if i%2==1:
        s=s+i/(2*i-1)
    else:
        s=s-i/(2*i-1)
print("{:.3f}".format(s))

7-6 同じ数字で n 桁を生成する

2 2で読む2 つの正の整数AAABBB1 ≤ A ≤ 9 , 1 ≤ B ≤ 10 1\le A\le9, 1\le B\le1019 ,1B1 0、数 AA...A を生成、合計 B A

a,b=input().split(",")
a,b=int(a),int(b)
for i in range(1,b+1):
    print(a,end='')

7-7 変換機能の使い方

整数と基数を入力し、10 進出力に変換します

a,b=input().split(",")
a,b=int(a),int(b)
c=(a//10)*b+(a%10)
print(c)

7-8 サイズ比較

入力3 33 つの異なる整数、これら3 33 つの整数は3 3に対応します3文字の ASCII コード値、これを3 3ASCII コード値の昇順で3文字を出力します。

a,b,c=input().split()
a,b,c=int(a),int(b),int(c)
i,j,k=chr(a),chr(b),chr(c)
if a>b:
    i,j=j,i
if a>c:
    i,k=k,i
if b>c:
    j,k=k,j
print("{0:}<{1:}<{2:}".format(i,j,k))

7-9 出力摂氏華氏温度変換表

上下 2 つの正の整数 (-20<=lower<=upper<=50) を入力して、摂氏範囲を示します。摂氏-華氏温度変換表を数値範囲[下限、上限]で毎回摂氏2度刻みで出力してください。温度換算の計算式:$F=C×1.8+32
入力形式:
下限値と上限値を表す整数を1行に2つ入力し、スペースで区切って入力してください。
出力形式:
最初の行は「摂氏□□□□ファール」を出力
し、各行は摂氏摂氏 (整数) と華氏温度 (14 文字幅を占有し、右揃え、小数点以下 1 桁を保持) を出力します。 .
入力範囲が無効な場合は「無効」が出力されます。

lower,upper=map(int,input().split())
if -20<=lower<=upper<=50:
    print("celsius    fahr")
    while lower<=upper:
        f=float(lower*1.8+32)
        print("{0:d}{1:>14.1f}".format(lower,f))
        lower=lower+2
else:
    print("Invalid.")

7-10 の偶数番号の特別なシーケンスと

9 を超えない正の整数 a が与えられ、正の整数 n が与えられた場合、n は 4<=n<=18 の偶数であり、aa+aaaa+aaaaaa+⋯+aa⋯a (n a) の合計を求めるプログラムを作成します。

a,n=map(int,input().split())
s=0
b=a
for i in range(1,n+1):
    b=10*b+a
    if i%2==1:
        s=s+b
print(s)

7-11 概算二乗和と逆数列

m と n (m≤n) のシーケンス近似和を計算します。 m 2 +1/m+(m+1) 2 +1/(m+1)+⋯+n 2 +1/n

import math
a,b=map(int,input().split())
c=0
for i in range(a,b+1):
    s=i**2+float(1/i)
    c=s+c
S=math.floor(c)
print("sum ≈ {}".format(S))

7-12 計算関数 f(x)

f ( x ) = sin ( 35 ° ) + ex − 15 xx 4 + 1 − ln ( 7 x ) f(x)=sin(35°)+\frac{e^x-15x}{\sqrt{x^ 4+1}}-ln(7x)f ( x )=シン( 3 5 ° ) _ _+バツ4+1 eバツ1 5 ×l n ( 7 x )

import math
x=float(input())
y=math.sin(35*math.pi/180)+(math.e**x-15*x)/math.sqrt(x**4+1)-math.log(7*x)
print("f({0:})={1:.3f}".format(x,y))

7-13 区間別住民水道料金の算定

段階的な水消費量の価格設定によると、住民が支払うべき水料金 y (元) は、毎月の水消費量 x (トン) に関連しています。x が 15 トンを超えない場合、y=4x/3;超えた後、y=2.5x-17.5。

x=float(input())
if x<=15:
    y=4*x/3
else:
    y=2.5*x-17.5
print("{:.2f}".format(y))

7-14 指定した図形を出力する

正の整数 (1<=n<=7) を入力し、指定されたグラフィックスを出力します。(ヒント:*演算子を使用)

n=int(input())
for i in range(1,n+1):
    print('* '* i)

第三章

身長は平均より7-1高い

クラスの身長を測定しました。平均身長を超える身長を出力してください。プログラムの入力は、スペースで区切られた 1 行のデータであり、各データは正の整数です。プログラムは、入力された正の整数の平均を超える入力値を出力し、各数値の後にスペースが続き、出力順序は入力と同じです。

sheight = map(int,input().split())
theight = list(sheight)
average = sum([i for i in theight])/len(theight)
over = [n for n in theight if n > average]
for j in over:
    print(j,end=' ')

7-2 文字列内の出力文字の位置インデックス

lst=(input())
a,b=input().split()
lst1=[]
for i in range(len(lst)):
    if lst[i]==a or lst[i]==b:
        lst1.extend([(i,lst[i])])
res=lst1[::-1]
for i in range(len(res)):
    print(res[i][0],res[i][1])

7-3 整数の桁数と桁の和を求めよ

n=int(input())
t=[i for i in str(n)]
l=len(t)
s=sum([int(i) for i in t])
print(l,s)

7-4 文字置換

str = input()
lst = list(str)
for i in lst:
    n = ord(i)
    if n >= ord('A') and n <= ord('Z'):
        n = ord('A')+ord('Z')-n
    print(chr(n),end='')

7-5 文字を削除する

文字列 str を入力し、削除する文字 c を入力します。大文字と小文字は区別されません。文字列 str に含まれるすべての文字 c を削除します。

str = input().strip()
c = input().strip()
str = str.replace(c.upper(),'')
str = str.replace(c.lower(),'')
print("result: {}".format(str))

7-6 繰り返しのない英語の文字を 10 個出力する

文字列をランダムに入力し、左端の繰り返しのない英字 (大文字と小文字を区別しない) を 10 文字選びます。英字が10文字ない場合は「見つかりませんでした」というメッセージが表示されます

letter='abcdefghijklmnopgrstuvwxyz'
s=input().strip()
s1=s.lower()
t=list(s1)
t1=[k for k in range(len(t)) if t[k] in letter and t.index(t[k])==k]
s2=''.join([s[k] for k in t1])
if len(s2)>=10:
    print(s2[:10])
else:
    print("not found")

7-7 逆順の 3 桁の数字

プログラムは毎回正の 3 桁の数字を読み取り、その数字を逆順に出力します。注: 入力数値に末尾の 0 が含まれている場合、出力の先頭に 0 を含めないでください。たとえば、700 を入力すると、出力は 7 になります。

n=int(input())
s=str(n)
res=s[::-1]
print(int(res))

7-8 2 つの文字列がアナグラムかどうかを判断する

1 つの文字列が別の文字列の再配置された組み合わせである場合、2 つの文字列は互いのアナグラムです。たとえば、「heart」と「earth」はお互いのアナグラムであり、「Mary」と「arMy」はお互いのアナグラムです。

lst1 = list(input())
lst2 = list(input())
lst1.sort()
lst2.sort()
if lst1 == lst2:
    print("yes")
else:
    print("no")

7-9 文字列を入力し、ソート後の元の文字列で最大の文字と文字のインデックスを出力する

tup = tuple(input())
for i in tup:
    if i == max(tup):
        result = i
ind = len(tup)-1-tup[::-1].index(result)
print("{}   {}".format(max(tup),ind))

7-10 n 個の文字列のうち、最も長い文字列の長さを計算する

n = int(input())
lst = []
lst1 = []
for i in range(1,n+1):
    lst.append(input().strip())
for l in lst:
    lst1.append(len(l))
length = max(lst1)
print("length={}".format(length))

7-11 1の数

負でない整数を入力し、2 進数になった後の 1 の数を見つけます

n = int(input())
count = 0
for i in bin(n):
    if i == '1':
        count += 1
print(count)

7-12 整数のバイナリ加算

の間のサイズの 2 つの整数を入力します[0,63]8 ビットで表されるバイナリ和を求めます。

m = int(input())
n = int(input())
a = m + n
m1 = int(format(m, "b"))
n1 = int(format(n, "b"))
a1 = int(format(a, "b"))
print("%08d" % m1)
print("%08d" % n1)
print("-" * 8)
print("%08d" % a1)

7-13 ハミング距離

2 つの整数間のハミング距離は、2 つの数値の対応するバイナリ ビットが異なる位置の数を指します。2 つの整数を入力x , y , 0 ≤ x , y ≤ 2 31 x,y, \quad0\le x,\quad y\le2^{31}× y 0× y23 1出力x、yx、y× yのハミング距離

x,y = input().split()
x = int(x)
y = int(y)
count = 0
temp = bin(x^y)
for i in temp:
    if i == '1':
        count += 1
print(count)

7-14 回文列を求める

回文は文字列の中心対称であり、左から右に読んだ内容は右から左に読んだ内容と同じです。文字列を入力し、その文字列が回文かどうかを判定します. 数字と文字だけが考慮され、文字の場合は違いはありません.

s = input().lower()
str = ''.join([i for i in s if i.isalnum()])
str1 = str[::-1]
if str == str1:
    print("yes")
else:
    print("no")

7-15 文字列を 1 行入力して 10 進出力に変換する

文字列を 1 行入力し、16 進数以外の文字を削除して、10 進数の出力に変換します。

s = input().strip()
cha = '0123456789abcdeABCDE'
str = ''.join([i for i in s if i in cha])
print("{}\n{}".format(str,int(str,16)))

7-16 特定の条件を満たす文字数を数える

文字列 A (繰り返し文字なし) を入力し、文字列 B を入力して、文字列 A の文字数を調べます。これらの文字は同時に文字列 B に含まれている必要があります。

A = input().strip()
B = input().strip()
count = 0
for i in A:
    if i in B:
        count += 1
print(count)

7-17 本人確認

法的な ID カード番号は、17 桁の地域、日付番号、およびシーケンス番号と 1 つのチェック コードで構成されます。チェックコードの計算規則は次のとおりです。
最初に、最初の 17 桁が重み付けされて合計され、重み付け分布は {7、9、10、5、8、4、2、1、6、3、7 です。 , 9, 10, 5 , 8, 4, 2}; 次に、11 を法として計算された合計を取り、値 Z を取得します; 最後に、次の関係に従って、Z 値とチェック コード M の値に対応します。

Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2

いくつかの ID 番号が与えられたら、チェック コードの有効性を確認し、問題の番号を出力してください。

n=int(input())
wrong=0
w=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)
m=('1','0','X','9','8','7','6','5','4','3','2')
for i in range(n):
    s=input()
    t=list(s)
    c=[t[i] for i in range(0,17) if ord(t[i]) in range(ord('0'),ord('9')+1)]
    if len(c)<17:
        print(s)
        wrong+=1
    else:
        a=sum([int(t[i])*w[i] for i in range(17)])
        z=a%11
        if m[z]!=t[17]:
            print(s)
            wrong+=1
if wrong==0:
    print("All passed")

第四章

7-1 入力数のべき乗表を生成する

負でない正の整数nnを入力してくださいn3 ≤ n ≤ 9 3\le n\le93n、入力数のべき乗表を生成する。出力n + 1 n+1べき乗の昇順n+1行、計算結果保持2 22位小数。

a,n = input().split()
a,n = float(a),int(n)
for i in range(n+1):
    print("{0:.1f}**{1:d}={2:.2f}".format(a,i,a**i))

7-2 素数を求める

import math
N = int(input())
count = 0
for i in range(1,N+1):
    num = int(input())
    for j in range(2,int(math.sqrt(num))):
        if num%j == 0:
            count += 1
    if count == 0:
        print("Yes")
    else:
        print("No")

7-3 指定した範囲の素数を表示して合計する

指定された範囲の素数を表示します。素数の間には 1 つのスペースがあり、5 行ごとに改行されます。素数の数と素数の和を 1 行に出力します。

M,N = map(int,input().split())
amount = 0
sum = 0
for i in range(M,N+1):
    count = 0
    if i>1:
        for j in range(2,i):
            if i%j == 0:
                count += 1
        if count == 0:
            amount += 1
            sum += i
            print(i,end=' ')
            if amount%5 == 0:
                print()
print("\namount={} sum={}".format(amount,sum))

7-4 猿が桃を食べる問題

サルは初日に数個の桃を摘み、すぐに半分食べて満足できなかったので、別の桃を食べ、翌朝、残りの桃の半分を食べ、さらにもう1個食べました。その後、毎朝、前日の残り半分+1個食べていました。N日目の朝、また食べようと思ったら、桃が1個しか残っていなかった。質問: 初日に何個の桃が収穫されましたか?

N = int(input())
n = 1
for i in range(1,N):
    n = (n+1)*2
print(n)

7-5 スコア列の最初の N 項の和を求める

シーケンスを計算します2 / 1 + 3 / 2 + 5 / 3 + 8 / 5 + . . . 2/1+3/2+5/3+8/5+...2 / 1+3 / 2+5 / 3+8 / 5+. . .最初の N 個のアイテムの合計。シーケンスは項目 2 から始まり、各項目の分子は前の項目の分子と分母の合計であり、分母は前の項目の分子であることに注意してください。

N = int(input())
a,b,c,sum = 1,2,0,0
for i in range(1,N+1):
    sum += b/a
    c = b
    b = a+b
    a = c
print("{:.2f}".format(sum))

7-6 送料割引

運送会社がユーザーの運賃を計算します。距離(S)が遠いほど、1キロあたりの送料が安くなります。基本的な輸送料金は、1 トン 1 キロあたり 1 元で、標準は次のとおりです。
ここに画像の説明を挿入

W,S = map(eval,input().split())
if S<250:
    cost = W*S
if S>=250 and S<500:
    cost = 0.98*W*S
if S>=500 and S<1000:
    cost = 0.95*W*S
if S>=1000 and S<2000:
    cost = 0.92*W*S
if S>=2000 and S<3000:
    cost = 0.9*W*S
if S>=3000:
    cost = 0.85*W*S
print(int(cost))

7-7 最大公約数と最小公倍数

M,N = map(int,input().split())
a = 1
for i in range(2,min(M,N)):
    while(M%i == 0 and N%i == 0):
        M,N = M/i,N/i
        a = a*i
print("{} {}".format(a,int(a*M*N)))

7-8 条件を満たすフィボナッチ数を探す

フィボナッチ数列とも呼ばれるフィボナッチ数は、1、1、2、3、5、8、13、21、...、1、1、2、3、5、8、13、 21, ...,1 1 2 3 5 8 1 3 2 1 このシーケンスは 3 番目の項目から始まり、各項目は前の 2 つの項目の合計に等しくなります。入力数値より大きい最小のフィボナッチ数を見つけます。

n = int(input())
lst = [1,1]
while(lst[-1]<=n):
    lst.append(lst[len(lst)-2]+lst[len(lst)-1])
print(lst[-1])

7-9 入力値よりも誤差が小さい e の近似値を求める

自然定数eee は級数1 + 1 / 1 ! + 1 / 2 ! + ⋯ + 1 / n ! 1+1/1!+1/2!+⋯+1/n! を1+1 / 1 !+1/2 _ _++1 / n !計算を近似します。えいえいe前の i 項目の合計を表します。入力誤差範囲誤差誤差e r r o r ,当ei + 1 − ei < エラー e_{i+1}-e_i<エラーei + 1e<エラーee意味ますeの近似は誤差範囲を満たします。

error = float(input())
a,b = 1,1
s1 = 1+1/1
s2 = 1+1/1+1/2
while((s2-s1) > error):
    b = b+1
    a = a*b
    s1 += 1/a
    s2 += 1/(a*(b+1))
print("{:.6f}".format(s2))

午後7時~10時πの近似値

数式を使用してπ πを見つけますπの概算値: π 2 / 6 = 1 + 1 / 2 2 + 1 / 3 2 + 1 / 4 2 + … π^2/6=1+1/2^2+1/3^2+1/ 4 ^2+\ドット円周率2 /6=1+1 / 22+1 / 32+1 / 42+...合計項が誤差よりも小さい場合、合計を終了します。

import math
error = float(input())
s = 1
i = 1
while(1/(i**2) > error):
    i += 1
    s += 1/(i**2)
pi = math.sqrt(s*6)
print("{:.6f}".format(pi))

7-11 水仙の数

水仙の数はNNを指しますN桁の正の整数( N ≥ 3 ) (N≥3)( N3 ) の場合、各ビットの数値の N 乗の合計はそれ自体に等しくなります。例:153 = 1 × 1 × 1 + 5 × 5 × 5 + 3 × 3 × 3 153=1×1×1+5×5×5+3×3×31 5 3=1×1×1+5×5×5+3×3×3

N = int(input())
i = 0
for n in range(10**(N-1),10**N):
    sum = 0
    for j in range(0,N):
        i = n//(10**j)%10
        sum += i**N
    if sum == n:
        print(n)

7-12 公開されていない要素を探す

lst1 = input().split()
lst2 = input().split()
for i in lst1:
    count = 0
    for j in lst2:
        if i == j:
            count +=1
    if count == 0:
        print(i,end=' ')
for i in lst2:
    count = 0
    for j in lst1:
        if i == j:
            count +=1
    if count == 0 and i!=lst2[-1]:
        print(i,end=' ')
    if count == 0 and i == lst2[-1]:
        print(i,end='')

7-13 番号を見つける

完全数とは、自分自身を除いた約数の和と正確に等しい数です。例: 6 = 1 + 2 + 3 6=1+2+36=1+2+3、そのうち1, 2, 3 1, 2, 31 2 36 6係数6 。

import math
m,n= map(int,input().split())
count = 0
for i in range(m,n+1):
    lst = [1]
    for j in range(2,int(math.sqrt(i))+1):
        if i%j == 0:
            lst.append(j)
            if j*j != i:
                lst.append(i//j)
    if i == sum([a for a in lst]):
        count += 1
        print('{} = '.format(i), end="")
        lst.sort()
        print(" + ".join("%s" %a for a in lst))
if count == 0:
    print("None")

7-14 猿が王様を選ぶ

猿のグループが新しい猿の王様を選びたいと思っています。新しい猿王の選択方法は: let NNN個の候補サルが円を形成し、1 1 の1NNN数。1st1カウントは 1 日から始まり、各ラウンドは1 11チェックイン3 33、登録は3 33 の猿は円を出て、隣の次の猿から同じカウントを開始します。このサイクルが続き、最後に残った猿が猿王に選ばれます。すみません、猿王に選ばれたのはどの猿ですか?

N = int(input())
lst = []
for i in range(1,N+1):
    lst.append(i)
length = 0
index = 1
while True:
    if len(lst) == 1:
        print(lst[0])
        break
    if length == len(lst):
        length = 0
    if index == 3:
        del lst[length]
        index = 1
    else:
        index += 1
        length += 1

7-15 特定のマトリックス要素と

与えられたn×nn×nn×nの正方行列の場合、行列の主対角と副対角のすべての要素の合計を計算します。主対角線はマトリックスの左上隅から右下隅までの線であり、副対角線はマトリックスの右上隅から左下隅までの線です。

n = int(input())
lst = []
sum = 0
for i in range(n):
    lst.append(input().split())
for j in range(n):
    for k in range(n):
        if j == k or j+k == n-1:
           sum += float(lst[j][k])
print("{:.2f}".format(sum))

7-16 行列の行、列、対角和の最大値

3*3 行列の各行、列、対角の最大値を見つける

num = input().split()
lst = [num[:3],num[3:6],num[6:]]
lst1 = []
sum3,sum4 = 0,0
for i in range(3):
    sum1,sum2 = 0,0
    for j in range(3):
        sum1 += int(lst[i][j])
        sum2 += int(lst[j][i])
        if i == j:
            sum3 += int(lst[i][j])
        if i+j == 2:
            sum4 += int(lst[i][j])
    lst1.append(sum1)
    lst1.append(sum2)
lst1.append(sum3)
lst1.append(sum4)
print(max(lst1))

7-17 三角行列の判定

三角行列には、上三角行列と下三角行列があります。上三角行列は主対角より下の要素がすべて 0 の行列を指し、下三角行列は主対角より上の要素がすべて 0 の行列を指し、主対角は行列の左上隅からの接続です。右下隅に。

T = int(input())
for i in range(1,T+1):
    n = int(input())
    lst = []
    for j in range(n):
        lst.append(input().split())
    index,index1 = 0,0
    for h in range(n):
        for l in range(n):
            if l<h:
                index += int(lst[h][l])
            if l>h:
                index1 += int(lst[h][l])
    if index == 0 and index1 != 0:
        print("upper triangular matrix")
    elif index1 == 0 and index != 0:
        print("lower triangular matrix")
    else:
        print("no")

7-18 柔術式表を印刷する

N = int(input())
for i in range(1,N+1):
    for j in range(1,i+1):
        print("%d*%d=%-4d"%(j,i,j*i),end='')
        if j == i:
            print()

7-19 行列の極大値を求める

与えられたMMMNNN列の整数行列AAA,如果 A A Aの非境界要素A [ i ] [ j ] A[i][j]A [ i ] [ j ]が上下左右の 4 つの隣接する要素よりも大きい場合、その要素はA [ i ] [ j ] A[i][j] とA [ i ] [ j ]は行列の極大値です。

M,N = map(int,input().split())
A = []
for n in range(M):
    A.append(list(map(int,input().split())))
count = 0
for i in range(1,M-1):
    for j in range(1,N-1):
        if A[i][j]>A[i-1][j] and A[i][j]>A[i][j-1] and A[i][j]>A[i+1][j] and A[i][j]>A[i][j+1]:
            print(A[i][j],i+1,j+1)
            count += 1
if count == 0:
    print("None {} {}".format(M,N))

7-20 行列転置

m,n = map(int,input().split())
A = []
for i in range(m):
    A.append(list(map(int,input().split())))
A1 = []
for i in range(n):
    j = 0
    while(j<m):
        A1.append(str(A[j][i]))
        j += 1
for i in range(n):
    print(' '.join(A1[i*m:(i+1)*m]))

7-21 直角デジタルグラフィックスを表示する

n = int(input())
for i in range(1,n+1):
    for j in range(1,i+1):
        print(chr(j+64),end='')
    print()

7-22 ひし形の表示

n = int(input())
for i in range(1,n+1,2):
    print('{:^11s}'.format('*'*i))
for i in range(n-2,0,-2):
    print('{:^11s}'.format('*'*i))

7-23 パスカル三角形を表示する

n = int(input())
print('1 ')
if n>1:
    print("1 1 ")
    add = 0
    i = 3
    lst = [1, 1]
    while(i<n+1):
        lst1 = lst[:]
        lst = [1, 1]
        for j in range(1,i-1):
            add = lst1[j-1]+lst1[j]
            lst.insert(-1,add)
        i += 1
        for k in lst:
            print(k,end=' ')
        print()

おすすめ

転載: blog.csdn.net/Lillian_f/article/details/123724640