コンピューターレベル2 Pythonの基本問題 ブラッシングメモ

1.フォーマットフォーマット出力について

:ガイド記号(必須)
<Padding>:「=」、「+」など、パディングに使用する1文字
<Alignment>:<左揃え、>右揃え、^中央揃え
<Width>:スロット設定、出力幅
<、>: 整数と浮動小数点数に適用できる数値の桁区切り文字
<.precision>: 浮動小数点数の小数部の精度または文字列の最大出力長
<type>: 整数型 b、c、d、 o, x
,
_
_ 123;
o は 8 進数を表します (例: 0o123 は 10 進数の 83 を表します);
x は 16 進数 (小文字の 16 進数) を表します (例: 0x1a は 10 進数の 26 を表します);
X は 16 進数 (大文字の 16 進数) を表します (例: 0X1A) 10進数で26を表します。
1. キーボードで正の整数 n を入力し、必要に応じて画面に n を入力します (幅は 14 文字、数字は中央に揃え、不足部分は = で埋められます)。

n=eval(input())
print("{:=^14}".format(n))

2. ユーザーが入力した数値を取得し、30 文字幅の数値を 16 進数、中央揃え、小文字で出力し、文字を二重引用符 (") で埋めます。

s=input()
print("{:\"^30x}".format(eval(s)))

ここで注意してください。二重引用符 (") で埋める場合、" を直接埋め込むとエラーになります。Python では文字列として扱われるため、文字列に二重引用符を含める必要がある場合は、エスケープ文字を使用できます\

2. リストの加算と減算

1. a と b は 2 つのリスト変数です。リスト a には [3, 6, 9] が与えられます。キーボードでリスト b と入力し、リスト a の 3 つの要素をリスト b の対応する最初の 3 要素の後に挿入します。画面に出力します。
len(ls): リスト内の要素の数 ls
list(x): x をリスト型に変換します
ls.append(x): リストの最後に要素 x を追加します ls
ls.insert(i,x) : 要素 x をリストの最後に追加します。 ls 要素 x を位置 i に追加します。

a=[3,6,9]
b=eval(input())
j=1
for i in range(len(a)):
    b.insert(j,a[i])
    j+=2
print(b)

2. ユーザーがカンマで区切って入力した 3 つの数値を取得し、a、b、c として記録します。a を 70 の値、b を差、c を値の数として、増加する算術シーケンスが生成されます。このシーケンスはリスト形式で出力されます。
等差数列とは、2 番目の項から始まり、各項とその前の項の差が同じ定数に等しい数列を指し、多くの場合 A と P で表されます。この定数は等差数列の許容値と呼ばれ、多くの場合、許容値は文字 d で表されます。[1]
例: 1,3,5,7,9...2n-1。一般式は、an=a1+(n-1) d です。最初の項 a1=1、公差 d=2。最初の n 項の合計式は、Sn=a1 n+[n*(n-1) d]/2 または Sn=[n (a1+an)]/2 です。注: 上記の n はすべて正の整数です。

#请完善如下代码
a,b,c = 
ls = []
for i in range(c):
	ls.
print(ls)

この質問を完了できるかどうか、自分で解いてみてください。
私はほぼ 20 個の質問を行いました。私の理解では、質問の多くは大小さまざまです。
難しいようです。実際、彼が与えたコードと慎重な分析に基づいています。質問のうち、しっかりした基本的な Python 構文と組み合わせると、それでも非常に簡単です。

#请完善如下代码
a,b,c = eval(input())#序列解包
ls = []#创建一个空列表
for i in range(c):#range(c)循环c次因为要生成c个数量它是从【0,c)的左闭右开的范围所以不需要-1
	ls.append(a+b*i)#append在末尾追加
print(ls)

3. 乱数

1. 乱数シードとして 0 を使用し、1 (両端を含む) から 97 (両端を含む) までの 5 つの乱数をランダムに生成し、これら 5 つの乱数の二乗の合計を計算します。
乱数シードを設定する目的は、スコアリングを容易にするために固定の答えを取得することです。
形式は乱数シードを初期化するためのシード (a=None) です。デフォルト値は現在のシステム時間です
randint(a,b): generated (a,b) の間の整数
sample(pop,k): ポップ型から k 個の要素をランダムに選択し、リスト型として返します。
random(): (0.0, 1.0) の間のランダムな 10 進数を生成します。

import random
random.seed(0)
s=0
for i in range(5):
    n=random.randint(1,97)
    s=s+pow(n,2)
print(s)
import random
random.seed(0)
c=[]
for i in range(5):
   c.append(random.randint(1,97))
sum=0
for i in range(5):
    sum+=c[i]**2
print(sum)

2. 乱数シードとして 100 を使用し、1 (両端を含む) から 9 (両端を含む) までの 3 つの乱数をランダムに生成し、これら 3 つの乱数の 3 次和を計算します。
s=0 を for ループの内側と外側に配置する場合の違いは、変数 s のスコープとライフサイクルにあります。具体的な違いは次のとおりです:
for ループ内に s=0 を置きます:
for i in range(5):
s = 0
s += i
. 各ループの開始時に、変数 s は 0 に再初期化され、その後蓄積動作が実行されます。これは、各サイクルの が独立しており、互いに影響を与えないことを意味します。
for ループの外側に s=0 を配置します。 range(5) の
s = 0
for i:
s += i は
、ループの外側で変数 s を 0 に初期化し、ループを通じて毎回 s を累積します。これは、 のスコープがループ全体であり、各ループが元の基準に基づいて蓄積されることを意味します。
要約すると、s=0 を for ループの内側に置くと、ループするたびに変数が再初期化されますが、s=0 を外側に置くと、ループ全体を通じて変数の累積された状態が維持されます。
質問の意味によれば、累積する必要があるため、 s をループの外に置く必要があります。

import random
random.seed(100)
s = 0
for i in range(3):
    s+=pow(random.randint(1,9),3)
print(s)

4. 文字列

1. ユーザーが入力した文字列を取得し、その文字列を逆順に出力し、文字列の数を出力します。

  • スライス [::-1] を使用する: スライス演算子 [::-1] を使用すると、文字列を逆順に出力できます。
  • reversed() 関数を join() メソッドと組み合わせて使用​​します。 reversed() 関数を使用して文字列をイテレータに変換し、join() メソッドを組み合わせて文字を接続します。
  • 再帰関数を使用する: 再帰関数を使用して、文字列を 1 文字ずつ逆順に出力します。
    スライスの使用例:
a=input()
print(a[::-1],end='')
print(len(a))

2 番目の方法の例:

a=input()
print(''.join(reversed(a)),end='')
print(len(a))

3 番目の方法の例:

def reverse_string(s):
    if len(s) == 0:
        return s
    else:
        return reverse_string(s[1:]) + s[0]
a=input()
b = reverse_string(a)
print(b,end='')
print(len(b))

2. ユーザーが入力した数字を取得し、数字(0~9)を対応する漢字「01234567890」に置き換えて出力します。

n = input()
s = "〇一二三四五六七八九十"
for c in "0123456789":
    n = n.replace(c,s[int(c)])
print(n)

ループ内で replace() メソッドを使用して、文字列 n 内の現在の数字を対応する中国語の数字に置き換えます。int© を使用して文字 c をインデックスとして整数に変換し、s[int©] を使用して対応する中国語の数値を取得します。
全員に対して s[eval (c)] を試してみましたが、うまくいきました。
皆さんの2級合格を心よりお祈りしております!

おすすめ

転載: blog.csdn.net/m0_68165821/article/details/132916980