pythonの基本+
序文:
この記事のコードは、プログラミング Xiaobai によって書かれた最初の Python 入門書から引用されています. この記事を書く主な目的は、ブログの能力を発揮し、プログラミング能力を向上させることです. 侵害がある場合は、連絡して削除してください.エラーが発生しました。時間内に変更されます。
使用する IDE は jupyter であり、インストール プロセスについてはここでは詳しく説明しません。
1. ファイルを開きます。
# 打开files下的test.txt文件,且可读可写
file = open('./files/test.txt','r+')
# 在文件中写入 Hello world!
file.write("Hello world!")
# 将文件中内容赋值给file_read
file_read = file.readline()
# 关闭文件,必不可少
file.close()
# 输出文件中内容
print(file_read)
出力:
2. 文字列の基本的な使い方:
次に、last_name、first_name、cool にそれぞれ文字列を割り当てます。
last_name = '狗'
first_name = '蛋'
cool = 'cool!'
output = last_name + first_name + cool
print(output)
おそらく、出力と犬の卵 ccol についてはすでに考えているはずです。
3. シャーディングで必要なものを見つける:
次の URL でイメージ名をエクスポートします。
「http://ww1.site.cn/14d2e8ejw1exjogbxdxhj20ci0kuwex.jpg」「http://ww1.site.cn/85cc87jw1ex23yhwws5j20jg0szmzk.png」「http://ww2.site.cn/185cc87jw1ex23ynr1naj20jg0t60wv.jpg」「http://
_
_ ww3.site.cn/185cc87jw1ex23yyvq29j20jg0t6gp4.gif」
質問:上記の URL で画像ファイル名を出力する方法は、最初の URL を例にとります。
# 将网址赋值给url
url = 'http://ww1.site.cn/14d2e8ejw1exjogbxdxhj20ci0kuwex.jpg'
# -35就是将url中的值倒着数35个数开始给file_name赋值
file_name = url[-35:]
print(file_name)
得られた結果は、賢い友達なら想像できるはずです。それは写真のファイル名です、へへ!!
4. データの場所を見つける
次に、数字の位置を見つける簡単なコードを書きます. たとえば、フィールド158があり、携帯電話番号でその位置を見つける方法があります.
# 先将158放在我们的search中,以便调用
search = '158'
# 下面设置两个手机号
num_a = '158-9135-7829'
num_b = '167-7158-6788'
# 下面使用find()函数查找158字段的位置,并且输出
print(search + ' is at ' + str(num_a.find(search) + 1) + ' to ' + str(num_a.find(search) + len(search)))
print(search + ' is at ' + str(num_b.find(search) + 1) + ' to ' + str(num_b.find(search) + len(search)))
出力:
上記のコードは理解するのが難しくありません. タイトル 2 の文字列のスプライシングを使用しています. print()関数内のすべてのアイテムは文字列型であり、文字列型でないものも文字列型に変換されます. その中でもstr()関数の役割は他の型の値を文字列型に変換することです. find()関数は検索によって割り当てられた値のインデックス位置を見つけることができます. インデックスは0から始まるので,インデックスに基づいて 1 を追加すると、通常の人が特定する位置になります. 後でlen()を使用して検索で値の長さを取得し、その長さをインデックスに追加して、検索フィールドのカットオフ位置を取得します. .
5. 文字列のフォーマット:
上記の A と B の選択肢の単語が宙に浮いていることをどのように認識できますか?
# 在这里大概列举三种方式:
# 1.直接使用.format进行填充{
}
print('{} is a word she can get what she {} for.'.format('With', 'came'))
# 2.将字符串先赋值,然后再讲变量放入{
}
print('{preposition} is a word she can get what she {verb} for.'.format(preposition = 'With', verb = 'came'))
# 3.通过索引的方式
print('{0} is a word she can get what she {1} for.'.format('With', 'came'))
出力結果は一貫しており、埋められる空白の数が少ない場合は効果がありませんが、埋められる位置が多い場合、1番目の方法と3番目の方法では、埋められたコンテンツの位置を知ることができません。 2つ目の方法でも、空欄を埋める内容がすぐにわかるので、2つ目の方法の方が使いやすいと思います!
6. 組み込み関数:
演習 1:
1. 初級者向け: 重量変換器を設計し、「g」に数値を入力し、「Kg」に変換した結果を返します。
ここでは、必要な結果を得るために単純な関数を設計します。
# 创建一个重量转换的函数
def weight_convert(weight):
# 将输入进来的字符串转换为浮点型
weight = float(weight)
# 进行重量的转换
weight /= 1000
# 返回一个重量+‘kg’
return str(weight) + ' Kg'
# 输入一个重量(g)
weight = input("请输入一个重量(g):")
# 调用写好的重量函数,并且将上面输入进来的重量传入函数中
weight_Kg = weight_convert(weight)
# 按照一定格式输出重量转换
print(weight + " g 以 kg 为单位的大小是" + weight_Kg )
2. 中級難易度: 直角三角形の斜辺の長さを求める関数を設計します (2 つの直角辺がパラメーターで、最も長い辺を見つけます)。直角辺の長さが 3 と 4 の場合の場合、返される結果は 5 になります。
この質問のアイデアも比較的単純で、前の質問は死んでいます。関数を作成し、斜辺を見つけるためのアルゴリズムを関数に書き込んで、斜辺を見つける必要があるときにのみ必要になるようにします。関数を呼び出します!
ここではサードパーティ ライブラリと呼びます。numpy は非常に強力なサードパーティ ライブラリであり、今後のブログで言及される可能性があります。
import numpy as np
# 创建一个求直角三角形斜边的函数
def hypotenuse(a, b):
# 求斜边定理
c = np.sqrt((a ** 2) +(b ** 2))
# 将斜边返回
return str(c)
# 下面的内容就不难理解了,输入两个直角边,调用函数输出斜边
input_a = input("请输入第一条直角边:")
input_a = float(input_a)
input_b = input("请输入第二条直角边:")
input_b = float(input_b)
output_c = hypotenuse(input_a, input_b)
print("直角三角形的斜边长度为:" + output_c)
演習 2:
1. 対応する数のファイルをコンピュータに作成できるような関数を設計する.
比較的単純なアイデアは、トラバーサルを使用して 1 から 10 までの 10 個のファイルを作成し、**.format()** を使用してフォーマットすることです.ファイル名から番号。
for i in range(1, 11):
file = open('./files/{}.txt'.format(i), 'w+')
file.close()
2. フランクリンが言ったように、複利は魔法のようなものです。「複利はすべての鉛を金に変える石です」。amount (資金)、rate (利率)、time (投資時間) の 3 つの関数を含む複利計算関数 Investment() を設計します。各パラメーターを入力した後に関数を呼び出すと、各年の資金の合計額が返されます。こんな感じです(金利5%の場合)
ここでも関数を作成しますが、結局のところ、Python がオブジェクト指向プログラミングであることを学びます。
# 这次创建的函数需要我们输入资金,利率以及时间,想起来也比较简单
def invest(amount, rate, time):
print("principal amount:{}".format(amount))
for t in range(1, time + 1):
amount = amount * (1 + rate)
print("year{}:${}".format(t, amount))
invest(100, 0.05, 8)
3. 1~100 の範囲内の偶数を印刷し
、コードを直接配置するのは比較的簡単です。
for i in range(100):
if i % 2 == 0:
print(i)
7.総合演習:
次に、包括的なケースを設計します.
時間を節約するために、アイデアを本に直接貼り付け、
次のモジュールに分割します.
1. サイコロ投げモジュール
このゲームではサイコロが 3 つあり、乱数発生機能を利用してサイコロの出目に対して 1 から 6 までの乱数を生成し、while ループでサイコロの数を制御します。
def roll_dice(numbers=3, points=None):
print('<<<<< Roll The Dice! >>>>>')
if points is None:
# 在这里我们创建一个空列表来存放骰子的点数
points = []
while numbers > 0:
# 产生骰子的点数
point = np.random.randint(1, 7)
points.append(point)
numbers = numbers - 1
return points
2.勝利モジュール
def roll_result(total):
# 大为11到18,小为3到10,因为最小为3,最大为18
isBig = 11 <= total <= 18
isSmall = 3 <= total <= 10
if isBig:
return 'Big'
elif isSmall:
return 'small'
3. ゲーム開始モジュール
入力が生成された乱数と同じサイズの場合は勝ち、そうでない場合は負け
def start_game():
print('<<<<< GAME STARTS! >>>>>')
# 下面我们来输入自己的决定
choices = ['Big', 'Small']
Your_choice = input('Big or Small:')
# 首先我们要确保,我们的输入的为Big以及Small,否则后续无法正常运行
if Your_choice in choices:
# 在这里我们调用函数,得到三颗骰子点数的列表
points = roll_dice()
# 求和
total = sum(points)
# 判定结果
youWin = Your_choice == roll_result(total)
if youWin:
print('The point are', points, 'you win')
else:
print('The point are', points, 'you lose')
# start_game()
# 在这里我们调用开始游戏模块,进入游戏
start_game()
演習 3:
1. 最後の項目に基づいて、そのような機能、賭け金、およびオッズを追加します。具体的なルールは次のとおりです。
- 初期金額は1000元です
- 金額が0になるとゲーム終了
- デフォルトのオッズは 1 倍です。つまり、賭けが正しければ対応する額を獲得でき、賭け方が間違っていれば対応する額を失うことになります。
いくつかの単純なお金の関数を追加します。アイデアは、開始インターフェイスに再充電関数を追加し、while ループを追加して、1 つのゲームを次々と終了できるようにすることです。お金が 0 になったら、ゲームを終了する必要があります。お金が0以下になったら、ゲームをしている仲間に「お金を返して」と言ってゲームを終了させ、ゲームを終了させるにはbreakを使います。
改善されたコードを見てみましょう
def start_game():
money = input('充值金额:')
while True:
money = float(money)
print('<<<<< GAME STARTS! >>>>>')
choices = ['Big', 'Small']
Your_choice = input('Big or Small:')
if Your_choice in choices:
points = roll_dice()
cash_pledge = input('How much you wanna bet ? --')
cash_pledge = float(cash_pledge)
balance_outstanding = money - cash_pledge
total = sum(points)
youWin = Your_choice == roll_result(total)
if youWin:
money = money + cash_pledge
print('The point are', points, 'you win')
print('You gained ' + str(cash_pledge) + ',you have' + str(money))
else:
money = balance_outstanding
print('The point are', points, 'you lose')
print('You lost ' + str(cash_pledge) + ',you have' + str(money))
if money < 0:
print('把欠的钱抓紧还了')
break
elif money == 0:
print('没钱了')
break
# start_game()
start_game()
8. 複数の派生:
また、トラバース時に **b = [i for i in range(1,20000)]** メソッドを使用することもできますが、これにはさらに予想外の効果があります。実行時間をテストしてみましょう。多重導出の方法の方が計算能力が高いことがわかります。
import time
a = []
t0 = time.clock()
for i in range(1,20000):
a.append(i)
print(time.clock() - t0, "seconds process time")
t0 = time.clock()
b = [i for i in range(1,20000)]
print(time.clock() - t0, "seconds process time")
a = [i**2 for i in range(1,10)]
print(a)
c = [j+1 for j in range(1,10)]
print(c)
k = [n for n in range(1,10) if n % 2 ==0]
print(k)
z = [letter.lower() for letter in 'ABCDEFGHIGKLMN']
print(z)
より簡潔に見えますが、理解するのが難しい場合があります。
9. スライス:
ランダムに書かれたスライス。括弧内に入力されたパラメーターは、スライスする必要がある位置です。
# eg1
lyric = 'The night begin to shine, the night begin to shine'
words = lyric.split('e')
print(words)
出力が少し見にくいですか? スペースをスライスして、出力が
はるかに良く見えるかどうかを確認してみましょう. データを処理するときも注意を払う必要があり、混乱しないでください.
エピローグ:
この共有は終了しました。間違いや質問がある場合は、質問してください。! 皆さんの批判を歓迎します!私を修正してください!