Python 50によるプログラミングへのCS 50の導入の問題セットの解決—一度に一度:問題セット0


ここにオリジナルのブログ記事をお読みください。


最大のオンラインコースの一つでありone of the most popular courses of Harvard ) CS 50を定義する唯一のものではありません.事前にコンピューターサイエンスに関連した何かについて全くゼロの知識を持っていて、私が昨年コースを終えたとき、それは驚くほど私の予想を超えて、そしてdemo site それは大きなドーパミンラッシュだった.あなたが文字通りどんな先行経験なしでコースをとって始めるか、理解して、最終的にコースの問題セットを解決することができることは、ほとんど精神的な経験のようです.デイビッドJ .マランは初心者のために難しいように見える概念を内面化するのに役立つ驚異的な講師です.
CS 50は現在、コンピュータプログラミングへの導入の単一のコースではないが、様々な味を持つさまざまなコースのための大きな生態系になっている、それはWebプログラミング、人工知能、またはモバイルアプリケーションの開発です.
Pythonとのプログラミング入門は、理論上のコンピュータサイエンスの概念に焦点を当てていませんが、Pythonを使ったより一般的なプログラミングコースです.私はパイソンが大好きです、そして、CS 50がこの新しいコースで解決するために我々に提供する新しい問題を見ることに、本当に興奮していました.
開始する前に、ここで免責事項です:私は問題セットに完全なソリューションを提供するつもりはない.参照academic honesty .
私は、与えられた問題について考える方法について書くことを計画しています.私はあなたが既に問題セットの説明を読んだと仮定します.一般的に、問題は簡単に、おそらくより友好的に開始し、カーブが急になります.それは良い挑戦ですが、それはあなたが実際に学んでいる実現方法です.

屋内音声


The first problem かなり簡単です.私たちの与えられた入力だけではなく、“叫んだケース”にある“静か”である必要があります.もしそうならば'THIS IS YELLING' , then 'this is not yelling' . そして、この場合、Pythonで使用するツールのドキュメントを読むことが重要です.なぜなら我々はstr 問題のデータ型は、単にPythonが付属している場合、我々は単にルックアップする必要がありますstr 方法-そしてそうします.彼らの多く.例えば、capitalize() , lower() , upper() 他の多くの間で.どのように動作するかを見ましょう.
s = 'This is CS50.'

print(s.capitalize()) # This is CS50.
print(s.lower()) # this is cs50.
print(s.upper()) # THIS IS CS50.
この例では、与えられた文字列を完全に「静める」方法を既に見ることができます.に関してはinput() , 再び、ドキュメントが役立ちます.Pythonインタプリタではhelp(input) それを使う方法をあなたに啓示してください.

再生速度


This problem 私たちはより遅い再生をシミュレートし、スペースを置き換える... (三点).私たちがしたいことは、与えられた入力文字列を単語に分割し、再び3つのドットでそれらを結合することです.または、我々は単に3つのドットとスペース文字を置き換えることができます.すべての種類の問題と同様に、解決のために異なる方法があります.ここで再びドキュメントが重要です.私たちはstr また、どのようなメソッドを実装するかに関係なく、この例で何をしたいのかという名前のメソッドがあります.単純に探索し、それらを見つける.

顔作り


With this one , 私たちはどんな出来事も置き換える必要がある:) 絵文字で🙂 and :( with 🙁. ここで実現する最も重要なことの一つは、Emojisstr この場合の型.我々がしたいことは、よく、文字通りの文字を他の文字と文字通り置き換えることです.繰り返しますが、ドキュメントのコンサルティングは、私たちがやりたいことに役立ちます.
また、この問題はモジュールの機能を強調し、関数へのコードの分割を強調する.例えば、何かをする代わりにmain() 以下のように機能します:
def main():
    incantation = 'Expecto Patronum'
    print(f'{incantation.upper()}!')

main() # EXPECTO PATRONUM!
より良い方法があります.
def say_incantation(incantation):
    return f'{incantation.upper()}!'

def main():
    incantation = 'Expecto Patronum'
    print(say_incantation(incantation))

main() # EXPECTO PATRONUM!
同様にこの問題では、convert 顔文字をemojisに変換する機能main 呼び出す関数convert その中に.

アインシュタイン


このproblem set アインシュタインの質量エネルギー等価公式を使うE = mc^2 . 与えられた質量のために、我々はジュールにエネルギーを出力する必要があります.c 式では、約300000000(毎秒メートル)として測定される光の一定速度です.主なことは、数式内の等価物に変数をプラグインすることですが、覚えておくべきことはinput 機能は働きます.なぜなら、この問題では、ほとんどの場合はstr タイプは、今回は、むしろint データ型.それで、我々のプログラムのどんなストリングのためにでもtype casting 私たちが整数を必要とするだけで役に立つことです.例えば、
# This would not work
year = '2022'
print(year - 22) # TypeError
# But this would work
year = int('2022')
print(year - 22) # 2000
おそらく、なぜint タイプは大きくて、少しの頭痛でもありませんfloat sは後の問題セットでより高く評価されることができます.

ヒント電卓


最後のproblem はほとんど実行され、残りの2つの関数だけが実装されるのを待っています.
dollars_to_float and percents_to_float 入力が書式設定に関して同様であると予想してください.最初の1つのような入力を期待$50.00 そして、2番目の1つのような入力が必要です15% , もちろん両方とも文字列です.Einstein問題のように、型キャスティングはこの問題において役に立つことです.しかし、その前に、我々は$ (ドル記号)% (パーセント記号).最初のケースで行う必要があるのは、接頭辞(左から先頭の文字)を削除し、2番目のケースでサフィックス(右から終了文字)を削除することです.これらの方法を行う方法は複数ありますが、組み込みのメソッドを使用する代わりに文字列をスライスすることもできます.そして、これら以外の解決策は本当にありません.入力値が予想された形式で与えられると仮定するので、我々はエッジケースについてまだ考える必要はありません.
これらの問題の核心は、あなたが調査者でなければならないということです.そして、私はこの問題セットの物語のモラルはいくつかに迷惑をかけるかもしれないフレーズですが、それはそれが何であるか:ドキュメントを読んでください.または、単に、必要なものを探して、ドキュメントでそれを見つけることを学ぶ.問題セット0のために、ビルトインstr メソッドといくつかの型のキャストが十分です.
我々は、次の問題セットがもたらすものを見るでしょう.
それまで、ハッピーコーディング.💜