1.変数とタイプ
- 一般的に使用されるデータ型:
- 整数:Python 3にはintのみがあり、2進数(0b100 = 4)、8進数(0o100 = 8)、10進数、および16進数(0x100 = 256)をサポートします。
- 浮動小数点タイプ:10進数とも呼ばれ、科学的記数法をサポートします
- 文字列タイプ:一重引用符または二重引用符で囲まれた任意のテキスト、特別な使用法:複数行のテキストを3つの引用符で書き込むことができます
- ブール値:0(false)、true(1、2、3 ...)
- 複素数タイプ:数学的表現と同じですが、唯一の違いは、虚数部iがjに置き換えられていることです。
#算术运算
a = 5
b = 2
print(a + b) # 7
print(a - b) # 3
print(a * b) # 10
print(a / b) # 2.5
print(a // b) # 2
print(a % b) # 1
print(a ** b) # 25
type()を使用して、変数の型を確認します。
a = 1
b = 3.14
c = 5 + 2j
d = 'Hello,World'
e = True
print(type(a)) # <class 'int'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'complex'>
print(type(d)) # <class 'str'>
print(type(e)) # <class 'bool'>
1.1変数型変換
- int():数値または文字列を整数に変換します
- float():文字列を浮動小数点数に変換します
- str():指定したオブジェクトを文字列形式に変換し、コードを指定できます
- chr():整数をコードに対応する文字列(文字)に変換します
- ord():文字列(文字)を対応するコード(整数)に変換します
a = int(input('a = '))
b = int(input('b = '))
print('%d + %d = %d' % (a, b, a + b)) # %后面跟的变量值会替换掉占位符
print('%d - %d = %d' % (a, b, a - b))
print('%d * %d = %d' % (a, b, a * b))
print('%d / %d = %f' % (a, b, a / b))
print('%d // %d = %d' % (a, b, a // b))
print('%d %% %d = %d' % (a, b, a % b))
print('%d ** %d = %d' % (a, b, a ** b))
# 占位符语法:
# %d是整数的占位符
# %f是小数的占位符
# %%表示百分号
a = 1
b = 1
1 + 1 = 2 1-1
= 0
1 * 1 = 1
1/1 = 1.000000
1 // 1 = 1
1%1 = 0
1 ** 1 = 1
# 赋值运算符和复合赋值运算符
a = 2
b = 3
a += b # 等于a = a + b
a *= a + 1 # 等于a = a * (a + 2)
print(a)
30
ケース1:華氏を摂氏に変換する
# 案例一:
# 华氏温度到摄氏温度的转换公式为:$C= (F - 32)/div 1.8$
F = float(input("请输入华氏温度:"))
C = (F - 32) / 1.8
print("%.1f华氏度 = %.1f摄氏度" % (F, C)) # 也可以使用:%
華氏で温度を入力してください:100
華氏100.0度=摂氏37.8度
ケース2:円の半径を入力して、周囲長と面積を計算します
# 案例二:
import math
r = float(input("请输入圆的半径:"))
perimeter = 2 * math.pi * r
area = math.pi * r ** 2
print("圆的周长为:%.2f" % perimeter)
print('圆的面积为:%.2f' % area)
円の半径を入力してください:2円
の周囲長:12.57円
の面積:12.57
ケース3:うるう年かどうかを判断するために年を入力します
#输入年份,如果是闰年输出true,否则为false
year = int(input("请输入年份:"))
lead_year = (year % 4 == 0 and year % 100 != 0) or \
year % 400 == 0
print(lead_year)
分岐構造
- ifステートメント
- elif、else
- ネストされたブランチ構造
- 2つのケースを比較すると、ケース1の方が理解と実行が容易であると結論付けることができます。これは、フラットがネストされた、つまりフラットよりも優れていることを示しています。
- フラット構造を使用できる場合は、ネストを使用しないでください
# 案例1:
a = input("输入关键字:")
if a == "1":
print("yes")
else:
print("no")
# 案例2:
# 分段函数求值:
"""
3x - 5 (x > 1)
f(x) = x + 2 (-1 <= x <= 1)
5x + 3 (x < -1)
"""
x = float(input("x = "))
if x > 1:
f = 3 * x -5
elif -1 <= x <= 1:
f = x + 2
else:
f = 5 * x +3
print('f(%.2f) = %.2f' % (x, f))
# 案例2:
# 嵌套的分支结构,完成上面的分段函数求值
# 双层嵌套
x = float(input('x = '))
if x > 1:
f = 3 * x - 5
else:
if x >= -1:
f = x + 2
else:
y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, f))
ケース3:100ポイントのシステムスコアから成績システムスコアへの変換
score = float(input("请输入成绩: "))
if score >= 90:
print("A")
elif score >= 80:
print("B")
elif score >= 70:
print("C")
elif score >= 60:
print("D")
else:
print("E")
環状構造
- for-inループ(ループの数がわかっている場合に使用)
- 範囲の使用法:
- range(101)は、0〜100の整数のシーケンスを生成します
- range(1、100)は、1から99までの整数のシーケンスを生成します
- range(1、100、2)は、1から99までの一連の数値を生成します。ステップサイズは次のとおりです。2
- 範囲の使用法:
- whileループ(ループの数が不明な場合に使用)
- ブレーク:ブレークが配置されているループを終了します
- 続行:このループの後続のコードを破棄し、ループを直接次のラウンドに入れます
# 循环求和
s = 0
for x in range(11):
s += x
print(s)
# 双重循环嵌套
# 实现九九乘法表
for i in range(1, 10):
for j in range(1, i+1):
s = i * j
print(s, end ="\t")
print()
ケース1:水仙の数ケース:
- 水仙の数は3桁の数であり、数の各桁の立方体の合計は3桁の数に等しくなります
for num in range(100,1000):
fir = num % 100
sec = num // 10 % 10 # 此处使用地板除
thd = num // 100
if num == fir ** 3 + sec ** 3 + thd ** 3:
print(num)
# 407
ケース2:正の整数を反転します(whileループを使用)
- 例:123は321になります
num = int(input('num = '))
reversedNum = 0
while num > 0:
# 首先,反转数字reversed_num为0
# 被反转的数字每次将他的最低位数字给 reversedNum
# 并且每次扩大10倍
reversedNum = reversedNum * 10 + num % 10
num //= 10
print(reversedNum)
ケース3:クラップスギャンブルゲーム(上記の文法を組み合わせて実現)
- このゲームは2つのサイコロを使用し、プレーヤーは__two__サイコロを振ってポイントを獲得することでゲームをプレイできます。
- ゲームのルール:
- プレイヤーが7または11ポイントで初めてサイコロを振った場合、プレイヤーは勝ちます
- プレイヤーが初めて2ポイント、3ポイント、または12ポイントをロールした場合、ディーラーが勝ちます。
- 他のプレイヤーはサイコロを振り続けます
- プレイヤーが7ポイントをロールした場合、ディーラーが勝ちます
- プレイヤーが最初のポイントをロールした場合、プレイヤーは勝ちます
- 他のポイントについては、勝者が決定されるまで、プレイヤーはサイコロを取り続けます
from random import randint
money = 1000
while money > 0:
print('你的总资产为:', money)
needs_go_on = False
while True:
debt = int(input('请下注: '))
if 0 < debt <= money:
break
first = randint(1, 6) + randint(1, 6)
print('玩家摇出了%d点' % first)
if first == 7 or first == 11:
print('玩家胜!')
money += debt
elif first == 2 or first == 3 or first == 12:
print('庄家胜!')
money -= debt
else:
needs_go_on = True
while needs_go_on:
needs_go_on = False
current = randint(1, 6) + randint(1, 6)
print('玩家摇出了%d点' % current)
if current == 7:
print('庄家胜')
money -= debt
elif current == first:
print('玩家胜')
money += debt
else:
needs_go_on = True
print('你破产了, 游戏结束!')
ケース4:1から999までのすべての完全数を見つける
- 完全数とは、それ自体を除くすべての要素の合計がその数自体と正確に等しい数です。
- 例:6 = 1 + 2 + 3、28 = 1 + 2 + 4 + 7 + 14
import math
for num in range(1, 1000):
result = 0
for factor in range(1, int(math.sqrt(num)) + 1): # sqrt:表示平方根函数
# 确定出factor是否是因子,即能够完全整除的数
if num % factor == 0:
result += factor
# 排除相同的因子,例如4 = 2 * 2
if factor > 1 and num // factor != factor:
result += num // factor
# 判断因子之和是否和数字本身相等
if result == num:
print(num)
1
6
28
496
ケース5:100以内のすべての素数を出力する
- 素数とは、1と整数自体を除いて、1より大きい自然数の整数を指します。これは、他の自然数で割り切れない数です。
import math
for num in range(2, 100):
prime = True
# 对num进行开平方,可以这样理解:
# 100以内的数字只要能够整除2到int(math.sqrt(num)) + 1之间的数
# 就表明,这个数不是素数,即不止1和他本身两个因子
for factor in range(2, int(math.sqrt(num)) + 1):
if num % factor == 0:
prime = False
break
if prime == 1:
print(num, end=' ')