ホームページ  >  記事  >  バックエンド開発  >  Pythonの面接の質問と回答60選!年明け以降の就職活動の必読書

Pythonの面接の質問と回答60選!年明け以降の就職活動の必読書

云罗郡主
云罗郡主オリジナル
2019-01-28 13:25:107832ブラウズ

2019 年の最新 60 件の Python 面接の質問と回答!新年度の就職活動必読、Pythonのメリット。 [推奨チュートリアル: Python チュートリアル]

Pythonの面接の質問と回答60選!年明け以降の就職活動の必読書

1. Python の特徴と利点は何ですか?

回答: 省略しました。

2.ラムダ関数とは何ですか?その利点は何ですか?

ラムダ関数は、任意の数のパラメーター (オプションのパラメーターを含む) を受け入れ、単一の式の値を返す関数です。 Lambda 関数にはコマンドを含めることはできず、複数の式を含めることもできません。ラムダ関数に多くを詰め込みすぎないでください。より複雑な関数が必要な場合は、通常の関数を定義して、必要なだけ長くしてください。

ラムダ関数は、オプションのパラメーターを含む任意の数のパラメーターを受け入れることができますが、式は 1 つだけです:

>>> g = lambda x, y: x*y

>>> g(3,4)

12

>>> g = ラムダ x, y=0, z=0: x y z

>>> g(1)

1

>>> g(3, 4, 7)

14

ラムダ関数を変数に代入せずに直接使用することもできます:

>>> (lambdax,y=0,z=0:x y z) (3,5) ,6)

14

関数が非常に単純で、式が 1 つだけあり、コマンドがない場合は、ラムダ関数を検討してください。結局のところ、関数にはそれほど多くの制限がありません。

3. ディープ コピーとシャロー コピーの違いは何ですか?

ディープコピーとは、オブジェクト自体を別のオブジェクトにコピーすることです。これは、オブジェクトのコピーに変更を加えても、元のオブジェクトは影響を受けないことを意味します。 Pythonではdeepcopy()関数を使ってディープコピーを行いますが、使用方法は以下の通りです:

>>> import copy

>>> b= copy.deepcopy( a)

浅いコピーは、オブジェクトの参照を別のオブジェクトにコピーすることです。したがって、コピーに変更を加えると、元のオブジェクトに影響します。浅いコピーを実行するには、copy() 関数を使用します。使用方法は次のとおりです:

>>> b=copy.copy(a)

4。リストとタプルの違いは何ですか?

try…例外…例外…[else…][finally…]

try の下のステートメントを実行します。例外がスローされた場合、実行プロセスは例外ステートメントにジャンプします。 。各例外ブランチを順番に実行してみて、発生した例外が例外の例外グループと一致する場合は、対応するステートメントを実行します。すべての例外が一致しない場合、例外は、このコードを呼び出す次に高いレベルの try コードに渡されます。

try のステートメントは通常どおり実行され、else ブロック コードが実行されます。例外が発生した場合は実行されませんが、finally 文がある場合は必ず最後に実行されます。

5. Python で乱数を生成するにはどうすればよいですか?

答え: ランダムモジュール

ランダム整数:random.randint(a,b): ランダムな整数 x、a<=x<=b

random を返します。 . randrange(start,stop,[,step]): 終了値を除いた、(start,stop,step) 間のランダムな整数範囲を返します。

ランダムな実数:random.random():0 から 1 までの浮動小数点数を返します

random.uniform(a,b):指定された範囲内の浮動小数点数を返します

6. Python でマルチスレッドを実装するにはどうすればよいですか?

a. Python にはマルチスレッド パッケージがありますが、コードを高速化するためにマルチスレッドが必要な場合、通常はそれを使用することは得策ではありません。

b. Python には GlobalInterpreter Lock (GIL) と呼ばれる構造があります。 GIL は、常に 1 つの「スレッド」だけが実行できるようにします。 1 つのスレッドが GIL を取得し、少しの作業を行ってから、GIL を次のスレッドに渡します。

c. これは非常に迅速に行われるため、人間の目にはスレッドが並列実行されているように見えますが、実際には同じ CPU コアを交互に使用しているだけです。

d. これらすべての GIL パスにより、実行オーバーヘッドが追加されます。これは、コードをより高速に実行したい場合、スレッド パッケージを使用することは一般に得策ではないことを意味します。

7. Python で三項演算子を使用するにはどうすればよいですか?

三項演算子は、条件文を表示するために使用される演算子です。これには、true または false の値を評価するステートメントが含まれます。

構文: 三項演算子の構文は次のとおりです。

[on_true] if [式] else [on_false]

例:

x, y = 25,50

big = x if x < y else y

x

8. Python の継承を例を挙げて説明します。

継承により、あるクラスが別のクラスのすべてのメンバー (プロパティやメソッドなど) を取得できるようになります。継承によりコードの再利用が可能になり、アプリケーションの作成と保守が容易になります。継承するクラスはスーパークラスと呼ばれ、継承元のクラスは派生/サブクラスと呼ばれます。

以下は、Python でサポートされているさまざまなタイプの継承です:

a. 単一継承 - 派生クラスは、単一のスーパークラスのメンバーを取得します。

b. マルチレベル継承 - 派生クラス d1 は基本クラス Base1 を継承し、d2 は Base2 を継承します。

c. 階層継承 - 基底クラスから任意の数のサブクラスを継承できます

d. 多重継承 - 派生クラスは複数の基底クラスから継承します。

9. Flask とは何か、その利点を説明してください。

Flask は、「Werkzeug、Jinja2、Good Intentions」BSD ライセンスに基づく Python Web マイクロフレームワークです。 Werkzeug と Jinja2 は、その依存関係の 2 つです。これは、外部ライブラリへの依存関係がほとんどないことを意味します。これにより、フレームワークが軽量になり、更新への依存関係がほとんどなくなり、セキュリティ バグも少なくなります。

セッションでは基本的に、あるリクエストから別のリクエストまでの情報を記憶することができます。 flask では、ユーザーがセッションのコンテンツを表示して変更できるように、セッションは署名付き Cookie を使用します。 Flask.secret_key キーがある場合に限り、ユーザーはセッションを変更できます。

10. Python の辞書とは何ですか?

Python の組み込みデータ型は辞書と呼ばれます。キーと値の間の 1 対 1 の関係を定義します。ディクショナリには、キーのペアとそれらに対応する値が含まれています。辞書はキーによってインデックスが付けられます。

例を見てみましょう:

次の例には、いくつかのキー、国、首都、PM が含まれており、それらに対応する値はそれぞれインド、デリー、モディです。

dict={'国':'インド','首都':'デリー','PM':'モディ'}

print dict[国]

インド

print dict[Capital]

Delhi

print dict[PM]

Modi

11. とは負の指数、なぜ使用されるのですか?

Python のシーケンスにはインデックスが付けられ、正と負の数値で構成されます。正の数値では、最初のインデックスとして「0」が使用され、2 番目のインデックスとして「1」が使用されます。

負のインデックスは、シーケンス内の最後のインデックスを表す「-1」から始まり、最後から 2 番目のインデックスとして「-2」が続きます。

12. Python を使用してテキスト文字列をクエリおよび置換するにはどうすればよいですか?

sub() メソッドを使用してクエリと置換を行うことができます。sub メソッドの形式は次のとおりです:

a.sub(replacement, string[,count=0])

b. replace は置換されるテキストです

c. string は置換されるテキスト

d. count はオプションのパラメータであり、最大数を指します。置換

13. Python の and-or 構文の説明

は C の式 bool ? a : b に似ていますが、a が false の場合は bool と a または b になります。 、 C の式 bool のように機能しません ? a : b

and-or トリックは関数にカプセル化する必要があります:

defchoose(bool, a,b): return(booland [a ]or[b])[0]

[a] は空ではないリストであるため、false になることはありません。 a が 0 や ''、あるいはその他の false 値であっても、list[a] には要素が 1 つあるため true になります。

#14. リスト内の重複要素を削除する Python コードを作成してください。#1、set 関数 set(list)

## を使用してください。 # 2. 辞書関数を使用します。

##>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]

>>> b={}

>>>b=b.fromkeys(a)

>>>c=list(b.キー ())

>>> c

15. 一重引用符、二重引用符、三重引用符の違いは何ですか?

一重引用符と二重引用符は同じです。改行する場合は、記号 (\) が必要です。三重引用符は行を直接囲み、コメントを含めることができます。Let's go を表現したい場合はこの文字列

一重引用符: s4 = 'Let\'s go'

二重引用符: s5 = "Let's go"

s6 = '私は「Python」が大好きです! '

これが、一重引用符と二重引用符の両方で文字列を表すことができる理由です。

16. Python を終了すると、すべてのメモリ割り当てが解放されますか?

答えは否定的です。オブジェクト循環参照またはグローバル名前空間参照を持つ変数は、Python の終了時に解放されないことがよくあります。さらに、C ライブラリによって保持されている一部の内容は解放されません。

17. Python の search() と match() の違いは何ですか?

match() 関数は、文字列の先頭で RE が一致するかどうかのみを検出します。search() は文字列全体をスキャンして一致を見つけます。つまり、match() は一致のみを検出します。位置 0 で成功した場合は戻ります。開始位置が正常に一致しなかった場合、match() は none を返します。

18. Python でリスト内の項目をランダム化するにはどうすればよいですか?

以下に示す例を考えてみましょう: from random import shuffle

xx = ['Keep', 'The', 'Blue', 'Flag', 'Flying', 'High']

shuffle(x)

print(x)

次のコードの出力は次のとおりです。

['Flying', 'Keep', 'Blue', 'High', 'The','Flag']

19. Python でのコンパイルとリンクのプロセスそれは何ですか?

コンパイルとリンクにより、新しい拡張機能はエラーなしで正しくコンパイルされ、コンパイル プロセスに合格した場合にのみリンクできます。動的読み込みが使用される場合、それはシステムが提供するスタイルに依存します。 Python インタープリターを使用して構成設定ファイルを動的にロードすることができ、インタープリターは再構築されます。 これには次の手順が必要です:

a. 任意の名前とシステム コンパイラでサポートされている任意の言語でファイルを作成します。たとえば、file.c または file.cpp

b. このファイルを、使用しているディストリビューションの Modules/ ディレクトリに配置します。

c. Modules/ ディレクトリに存在する Setup.local ファイルに行を追加します。

d. スパム ファイルを使用してファイルを実行します。o

e. この再構築インタープリターを正常に実行した後、最上位ディレクトリで make コマンドを使用します。

f. ファイルが変更されている場合は、「make Makefile」コマンドを使用して、rebuildMakefile を実行します。

20. Python では、「re」モジュールの Split()、sub()、subn() メソッドについて説明します。

文字列を変更するために、Python の「re」モジュールには 3 つのメソッドが用意されています。

split() - 正規表現を使用して、指定された文字列をリストに「分割」します。

sub() - 正規表現パターンに一致するすべての部分文字列を検索し、それらを別の文字列に置換します。

subn() - これは sub() に似ており、新しい文字列と置換シーケンス番号も返します。 。

21. range と xrange の違いは何ですか?

xrange と range は、使用する整数のリストを生成する方法を提供するという点で、ほとんどの場合、機能的には同じです。唯一の違いは、range は Python リスト オブジェクトを返し、xrange は xrange オブジェクトを返すことです。

これは、xrange が実際には実行時のような静的リストを生成しないことを意味します。イールドと呼ばれる特別な手法を使用して、必要に応じて値を作成します。この手法は、ジェネレーターと呼ばれるオブジェクトで機能します。これは、非常に大きな範囲があり、たとえば 10 億のリストを生成したい場合に使用する関数は xrange であることを意味します。

これは、使用している電話など、メモリに非常に敏感なシステムを使用している場合に特に当てはまります。これは、range が整数配列の作成と同じくらい多くのメモリを使用するため、メモリ エラーが発生する可能性があるためです。そしてプログラムをクラッシュさせます。

22. Django、Pyramid、Flask の違い。

Flask は、主に、より単純な要件を持つ小規模なアプリケーションに使用される「マイクロフレームワーク」です。 Flask では外部ライブラリを使用する必要があります。

Pyramid は大規模なアプリケーションに適しています。これにより柔軟性がもたらされ、開発者はプロジェクトに適切なツールを使用できるようになります。開発者はデータベース、URL 構造、テンプレート スタイルなどを選択できます。

Django は、Pyramid と同様に大規模なアプリケーションにも使用できます。

23. Django で継承されたスタイルを一覧表示します。

Django では、3 つの可能な継承スタイルがあります:

抽象基本クラス: 親クラスに入力したくない情報だけを含めたい場合にこれを使用します。各子モデルのスタイル。

マルチテーブル継承: 既存のモデルをサブクラス化し、各モデルに独自のデータベース テーブルが必要な場合は、このスタイルを使用します。

プロキシ モデル: モデルのフィールドを変更せずに、モデルの Python レベルの動作のみを変更する場合は、このモデルを使用できます。

24. Python モンキーパッチとは何ですか?

Python では、モンキー パッチという用語は、実行時のクラスまたはモジュールの動的変更のみを指します。

次の例を考えてみましょう:

# m.py

class MyClass:

def f(self):

print " f ()"

その後、次のようにモンキーパッチ テストを実行できます:

import m

def Monkey_f(self):

print " Monkey_f( )"

m.MyClass.f = Monkey_f

obj = m.MyClass()

obj.f()

出力は次のとおりです。

monkey_f()

モジュールの外側で、関数 f() の動作にいくつかの変更を加え、関数 Monkey_f() が実際に実行されていることがわかります。

25. 2 つのシーケンス a と b があり、どちらもサイズは n です。シーケンス要素の値は任意の整数ですが、乱れていますか?

要件: a と b の要素を交換することにより、[シーケンス a の要素の合計] と [シーケンス b の要素の合計] の差が最小化されます。

1. 2 つのシーケンスを 1 つのシーケンスにマージし、シーケンス Source

2. 最大の要素 Big と 2 番目に大きい要素 Small

3 を取り出します。残りのシーケンス S[:-2] を均等に分割して、シーケンスの最大値、最小値

##4 を取得します。最大シーケンスに Small を加算し、最小シーケンスに Big を増加して、新しいシーケンスの合計を再計算します。合計が最大値、小さい方が最小値です。

26. Python を使用してメールを送信するにはどうすればよいですか?

smtplib 標準ライブラリを使用できます。

次のコードは、SMTP リスナーをサポートするサーバー上で実行できます。

import sys、smtplib

fromaddr =raw_input("From: ")

toaddrs = raw_input("To: ")。 split(',')

print 「メッセージを入力してください。^D で終わります:」

msg = ”

while 1:

line = sys .stdin.readline()

if not line:

break

msg = msg line

# メール部分送信

server = smtplib.SMTP('localhost')

server.sendmail(fromaddr, toaddrs, msg)

server.quit()

27. を書いてください。ファイル内の大文字の数を数える Python ロジック。

>>> import os

>>>os.chdir('C:\ \ Users\\lifei\\Desktop')

>>> with open('Today.txt') astoday:

count=0

for i today.read() 内:

if i.isupper():

count =1

print(count)

実行結果:

26

28. Python では識別子はどれくらいの長さになりますか?

Python では、識別子は任意の長さにすることができます。さらに、識別子に名前を付けるときは、次の規則に従う必要があります:

a. アンダースコアまたは A-Z/a-z

b の文字でのみ開始できます。残りは A-Z/ を使用できます。 a-z/ 0-9

c. 大文字と小文字を区別します

d. キーワードを識別子として使用することはできません。Python には次のキーワードがあります:

29. 説明Python

// 演算子の //、%、** 演算子はフロア除算 (下向き除算) を実行し、整数除算結果の整数部分を返します。

>>> 7//2

3

ここで割り算すると、3.5 が返されます。

同様に、べき乗演算を実行します。 ab は a の b 乗を返します。

>>> 2**10

1024

最後に、% はモジュロ演算を実行し、除算の余りを返します。

>>> 13%7

6

>>> 3.5%1.5

0.5

30. Python で多進数を使用するにはどうすればよいですか?

Python では、10 進数に加えて、2 進数、8 進数、16 進数も使用できます。

a. 2 進数は 0 と 1 で構成され、2 進数を表すために 0b または 0B の接頭辞を使用します。

>>> int (0b1010)

10

b. bin() 関数を使用して、数値をバイナリ形式に変換します。

>>> bin (0xf)

'0b1111'

c. 8 進数は 0 ~ 7 の数字で構成され、接頭辞 0o または 0O は8 進法の体系番号を表すために使用されます。

>>> oct (8)

'0o10'

d. 16 進数は 0 ~ 15 の数字で構成され、接頭辞 0x または 0X で表されます。 16 進数。

>>> 16 進数(16)

'0x10'

>>> 16 進数(15)

'0xf'

31. 辞書内のすべてのキーのリストを取得するにはどうすればよいですか?

keys() を使用して辞書内のすべてのキーを取得します

>>>mydict={'a':1,'b':2,'c' : 3,'e':5}

>>> mydict.keys()

dict_keys(['a', 'b', 'c', 'e' ] )

32. 複数の変数を宣言して値を割り当てる方法は?

2 つの方法があります:

>>> a,b,c=3,4,5 #これは、3、4、5 を a、b に割り当てます。 、および c をそれぞれ

#>>> a=b=c=3 #これにより、a、b、および c に 3 が代入されます

33. タプルのカプセル化解除とは?

最初にカプセル化解除を見てみましょう:

>>> mytuple=3,4,5

>>> mytuple

(3, 4, 5)

これは、3、4、5 をタプル mytuple にカプセル化します。

ここで、これらの値を変数 x、y、z に展開します:

>>> x,y,z=mytuple

>> ; > x y z

Get results 12.

34. Django でデータベースをセットアップする方法を説明します。

通常の Python モジュールである edit mysite/setting.py コマンドを使用できます。モジュール レベルは Django 設定を表します。

Django はデフォルトで SQLite を使用します。これは Django ユーザーにとって簡単なので、他の種類のインストールは必要ありません。データベースの選択が異なる場合は、DATABASE の「デフォルト」キーで次のキーを使用して、データベース接続設定と一致させる必要があります。

エンジン: 「django.db.backends.sqlite3」、「django.db.backeneds.mysql」、「django.db.backends.postgresql_psycopg2」、「django.db.backends.oracle」を使用できます。データベースを変更するまで待ちます。

Name: データベースの名前。 SQLite をデータベースとして使用している場合、データベースはコンピューター上のファイルとなり、名前はファイルのファイル名を含む完全な絶対パスである必要があります。

SQLite をデータベースとして選択しない場合は、パスワード、ホスト、ユーザー、その他の設定を追加する必要があります。 Django はデフォルトのデータベースとして SQLite を使用し、データをファイル システム内の個別のファイルとして保存します。データベース サーバー (PostgreSQL、MySQL、Oracle、MSSQL) があり、SQLite の代わりにそれを使用したい場合は、データベースの管理ツールを使用して Django プロジェクト用の新しいデータベースを作成します。いずれにせよ、(空の) データベースが配置されたら、あとはその使用方法を Django に伝えるだけです。これはプロジェクトの settings.py ファイルのソースです。

次のコード行をファイルに追加します:

DATABASES = {

'default': {

'ENGINE' : 'django .db.backends .sqlite3',

'NAME' : os.path.join(BASE_DIR, 'db.sqlite3'),

}

}

35. URL または Web ページの Google キャッシュ期限を取得するにはどうすればよいですか?

次の URL 形式を使用します:

http://webcache.googleusercontent.com/search?q=cache:URLGOESHERE

「URLGOESHERE」は必ず置き換えてください" キャッシュを取得したいページまたはサイトの正しい Web アドレスを指定し、時間を確認します。たとえば、edureka.co の Google Webcache の年齢を表示するには、次の URL を使用します:

http://webcache.googleusercontent.com/search?q=cache:edureka.co

36. Python のマップ関数とは何ですか?

Map 関数は、最初の引数として指定された関数を実行し、2 番目の引数として指定された反復のすべての要素を反復します。指定された関数に複数の引数が含まれる場合、多くの反復が与えられます。

37. NumPy 配列内の最大 N 個の値のインデックスを取得するにはどうすればよいですか?

次のコードを使用して、NumPy 配列内の最大 N 個の値のインデックスを取得できます:

import numpy as np

arr = np .array([1, 3, 2, 4, 5])

print(arr.argsort()[-3:][::-1])

output

[ 4 3 1 ]

38. Python/NumPy を使用してパーセンタイルを計算するにはどうすればよいですか?

次のコードを使用してパーセンタイルを計算できます

import numpy as np

a = np.array([1,2,3,4, 5] )

p = np.percentile(a, 50) #50 パーセンタイルを返します (例: 中央値)

print(p)

Output

3

39. (ネストされた) Python リストに対する NumPy 配列の利点は何ですか?

a. Python リストは効率的な汎用コンテナです。これらは (かなり) 効率的な挿入、削除、追加、連結をサポートしており、Python のリスト内包表記により構築と操作が簡単になります。

b. Python リストのいくつかの制限: 要素ごとの加算や乗算などの「ベクトル化された」演算はサポートされておらず、異なる型のオブジェクトを含めることができるという事実は、Python が各要素の型を格納する必要があることを意味します。各要素を操作するときに、情報とタイプのディスパッチ コードを実行する必要があります。

c. NumPy は効率が高いだけでなく、便利でもあります。多くのベクトル演算と行列演算を無料で利用できるため、不必要な作業を省くことができる場合があります。

d. NumPy 配列は高速であり、NumPy、FFT、畳み込み、高速検索、基本統計、線形代数、ヒストグラム、その他の組み込みメソッドを使用できます。

40. NumPy と SciPy の違いは何ですか?

a. 理想的な世界では、NumPy には配列データ型と最も基本的な操作 (インデックス付け、並べ替え、再形成、基本的な要素関数など) のみが含まれます。

b. すべての数値コードは SciPy に存在します。ただし、NumPy の重要な目標は互換性であるため、NumPy は、以前のバージョンのいずれかでサポートされていたすべての機能を保持しようとします。

c. したがって、NumPy には、より適切には SciPy に属するにもかかわらず、いくつかの線形代数関数が含まれています。いずれにせよ、SciPy には、線形代数モジュールのよりフル機能のバージョンと、他の多くの数値アルゴリズムが含まれています。

d. 科学計算に Python を使用する場合は、NumPy と SciPy をインストールする必要があります。ほとんどの新機能は NumPy ではなく SciPy に属します。

41. Python プログラムの中国語出力の問題を解決するにはどうすればよいですか?

次のようなエンコードとデコードを使用します:

import os.path

import xlrd,sys

Filename='/home/tom / Desktop/1234.xls'

if not os.path.isfile(Filename):

raise NameError,”%s は有効なファイル名ではありません”%Filename

bk =xlrd.open_workbook(ファイル名)

shxrange=range(bk.nsheets)

print shxrange

for x in shxrange:

p=bk .sheets()[x].name.encode('utf-8')

print p.decode('utf-8')

方法 2:

reload(sys)

sys.setdefaultencoding('utf8')

42 を追加します。次のコードを読んで、その出力は何ですか? ?

class A (オブジェクト):

def go (self):

print "go A go!"

def stop (self) ):

print "stop A stop!"

def stop(self):

raise Exception("未実装")

class B( A):

def go(self):

super(B, self)。 go()

print "go B go!"

class C(A):

def go(self):

super(C,自己)。 go()

print "go C go!"

def stop(self):

super(C, self)。 stop()

print "stop C stop!"

class D(B,C):

def go(self):

super( D、自分)。 go()

print "go D go!"

def stop(self):

super(D, self)。 stop()

print "stop D stop!"

def stop(self):

print "wait D wait!"

class E( B、C): パス

a = A()

b = B()

c = C()

d = D()

e = E()

# 次のコードの出力について説明します

a.go()

b.go()

c.go()

d.go()

e.go()

a.stop()

b.stop ( )

c.stop()

d.stop()

e.stop()

a.pause()

b.pause()

c.pause()

d.pause()

e.pause()

答え、出力結果はコメントフォーム:

a.go()

# go A go!

b.go()

# go A go!

# go B go!

c.go()

# go A go!

# go C go!

d .go()

# go A go!

# go C go!

# go B go!

# go D go!

e.go()

# go A go!

# go C go!

# go B go!

a. stop()

# stop A stop!

b.stop()

# stop A stop!

c.stop()

# stop A stop!

# stop C stop!

d.stop()

# stop A stop!

# stop C stop!

###d.stop()####### stop A stop!####### stop C stop!停止!###

# stop D stop!

e.stop()

# stop A stop!

a.pause()

# … 例外: 未実装

b.pause()

# … 例外: 未実装

c.pause()

# … 例外: 未実装

d.pause()

# wait D wait!

e.pause()

# …例外: 未実装

43. Python でのウェブブラウザの使用法を紹介しますか?

ウェブブラウザ モジュールは、Web ベースのドキュメントを表示するための高レベルのインターフェイスを提供します。ほとんどの場合、open() メソッドへの単純な呼び出しのみが必要です。

webbrowser は次の例外を定義します:

例外 webbrowser.Error、この例外はブラウザ コントロールでエラーが発生したときにスローされます

webbrowser には次のメソッドがあります:

webbrowser.open(url[, new=0[,autoraise=1]])

このメソッドは、デフォルトのブラウザに URL を表示します。new = 0 の場合、URL は次のようになります。同じようにブラウザ ウィンドウの下に開きます。new = 1 の場合、新しいウィンドウが開きます。new = 2 の場合、新しいタブが開きます。autoraise = true の場合、ウィンドウは自動的に拡大されます。

webbrowser.open_new(url)

デフォルトのブラウザで新しいウィンドウを開いて URL を表示します。それ以外の場合は、唯一のブラウザ ウィンドウで URL を開きます。

webbrowser.open_new_tab (url)

デフォルトのブラウザで新しいタブを開いて URL を表示します。それ以外の場合は、open_new()

webbrowser.get([name])

## と同じです。 #名前に基づいてブラウザ オブジェクトを返します。名前が空の場合は、デフォルトのブラウザを返します。

webbrowser.register(name, construtor[,instance])

名前を名前のブラウザとして登録します。 、このブラウザ タイプが登録されている場合は、get() メソッドを使用して取得できます。

44. Python では、リスト、タプル、辞書、セットの違いは何ですか?また、それらは主にどのようなシナリオで使用されますか?

定義:

リスト: リンクされたリスト、順序付けされた項目、インデックスによる検索、角括弧 "[]" を使用;

タプル: タプル、タプルをまとめるさまざまなオブジェクトがあり、変更できません。これらはインデックスを使用して検索され、括弧 "()" を使用します。

dict: Dictionary。辞書は、キーと値のセットの組み合わせです。キーによる検索、順序なし、中括弧 "{}" を使用します;

set: セット、順序なし、要素は 1 回のみ出現、自動重複排除、「set ([])」を使用します;

アプリケーション シナリオ:

list、単純なデータ コレクション、インデックスを使用できます;

tuple、一部のデータを全体として使用し、変更できません;

dict、キーと値に関連付けられたデータ。

set、データは 1 回のみ表示され、データの場所ではなく、データが表示されるかどうかのみが考慮されます;

コード:

mylist = [1, 2, 3, 4, 'ああ']

mytuple = (1, 2, 'こんにちは', (4, 5))

mydict = { '王' : 1, '胡' : 2, '劉' : 4}

myset = set(['Wang', 'Hu', 'Liu', 4,'Wang'])

45. 関数を作成し、入力します文字列を返し、結果を逆順で返します。例: string_reverse('abcdef')、return: 'fedcba' (複数のメソッドを使用して実装し、実装メソッド Compare を確認してください)。

回答: 5 つの方法の比較。

1. 単純なステップ サイズは -1、つまり文字列の反転です;

2. 前後の文字の位置を交換します;

3 . 再帰的メソッド、毎回文字を出力;

4. 両端のキュー、extendleft() 関数を使用;

5. for ループを使用、左から右に出力;

コード:

string = 'abcdef'

def string_reverse1(string):

return string[::-1]

def string_reverse2 (文字列):

t= list(string)

l= len(t)

for i,j in zip(range(l-1, 0, - 1)、範囲(l/ /2)):

t[i], t[j] = t[j], t[i]

return "".join(t )

def string_reverse3(string):

if len(string) return string

return string_reverse3(string[1: ]) string[0]

from collections import deque

def string_reverse4(string):

d= deque()

d.extendleft(string )

return ''.join(d)

def string_reverse5(string):

#return ''.join(string[len(string)-i] for i in range(1,len (string) 1))

return ''.join(string[i] for i in range(len(string)-1, -1, -1))

print(string_reverse1 (文字列))

print (string_reverse2 (文字列))

print (string_reverse3 (文字列))

print (string_reverse4 (文字列))

print (string_reverse5(string))

46. 次のステートメントのどれが辞書を作成しますか? (正解は複数あります) #a) d = {}

b) d = {"ジョン": 40, "ピーター": 45}

c)d = {40: "ジョン", 45: "ピーター"}

d)d = (40: "ジョン", 45: "50")

答え: b, CD。キーと値を指定して辞書を作成します。

47. フロア区分はどれですか?

a) /

b) //

C) %

d)

回答が記載されていません :b ) //; たとえば、5.0/2 = 2.5、5.0//2 = 2

48. 識別子の最大長はどれくらいですか?

a) 31 文字

b) 63 文字

c) 79 文字

d) 上記のいずれでもない

回答: d) 上記のどれでもない; 識別子は任意の長さにすることができます。

49. アンダースコアで始まるローカル変数名が推奨されないのはなぜですか?

a) クラスのプライベート変数を表すために使用されます

b) インタプリタを混乱させる

c) グローバル変数を表すために使用されます

d) 実行速度が遅くなります

回答: a) クラスのプライベート変数を表すために使用されます; Python にはプライベート変数の概念がないため、アクセスできない変数を表すために先頭のアンダースコアが使用されますクラスの外から。

50. 次のうち、無効なステートメントはどれですか?

#a) abc = 1,000,000

b) a b c = 1000 2000 3000

c) a, b, c = 1000,2000,3000

d) a_b_c = 1,000,000

答え: b) a b c = 1000 2000 3000; 変数名にはスペースを使用できません。

51. 以下の出力は何ですか?

try:

if '1' != 1:

raise "someError"

else:

print ("someError は発生していません")

以外は "someError":

print ("someError は発生しています")

a)someError が発生しています

b) 何らかのエラーは発生しませんでした

c) 無効なコード

d) 上記のいずれも発生しませんでした

答え: c) 無効なコード; 新しい例外クラスは BaseException から継承する必要があります。ここにはそのような継承はありません。

52. list1 が [2,33,222,14,25] であると仮定すると、list1 [-1] とは何でしょうか?

a) エラー

b) いいえ

c) 25

d) 2

答え: c) 25 ; インデックス -1 はリストの最後のインデックスに対応します。

53. ファイル c:\scores.txt を書き込み用に開くには、次を使用します:

a) outfile = open("c:\scores.txt" 、"r")

b) 出力ファイル = オープン ("c:\\scores.txt", "w")

c) 出力ファイル = オープン (ファイル = "c:\scores .txt", "r")

d) outfile = open (file = "c:\\scores.txt", "o")

答え: b) この位置には、ダブルスラッシュ バー (\$$、w は、ファイルが書き込まれていることを示すために使用されます。

54. 次の出力は何ですか?

f = なし

for i in range (5):

with open ("data.txt", "w") as f:

if i > 2:

break

print f.closed

a) True

b) False

c) None

d) エラー

答え: a) True; 開いているファイルで WITH ステートメントを使用すると、with ブロックの終了時にファイル オブジェクトが確実に閉じられます。

55. try-excel-else の else 部分はいつ実行されますか?

a) 常に

b) 例外が発生した場合

c) 例外が発生しない場合

d) 例外が発生した場合、例外が発生するまでブロック

答え: c) 例外が発生しない場合; 例外が発生しない場合は、else 部分を実行します。

56. a=1、b=2、aとbの値を交換するために中間変数を使用しないでください。

2 つの形式: 加算または XOR、コード:

a = 1

b = 2

a = a b

b = a - b

a = a - b

print ('a = {0}, b = {1}'.format (a,b))

a = a ^ b

b = a ^ b

a = a ^ b

print ('a = {0}, b = {1}'.format( a, b))

#57. 印刷結果を書いてください

x = [0, 1]

i = 0

i, x[i] = 1, 2

print(x)

Print result: [0, 2], Python は左から右への連続代入を使用できます。

g = ラムダ x, y=2, z : x y**z

g(1, z=10) = ?

出力結果: 例外、仮パラメータデフォルト パラメータはテーブルの最後にのみ存在でき、z はデフォルト パラメータを提供する必要があります。

58. Python のシングルトン パターン

シングルトン パターンは、一般的に使用されるソフトウェア設計パターンです。そのコア構造には、シングルトン クラスと呼ばれる特別なクラスが 1 つだけ含まれています。シングルトン モードでは、システム内にクラスのインスタンスが 1 つだけ存在し、外部からそのインスタンスに簡単にアクセスできるようにすることができるため、インスタンス数の制御が容易になり、システム リソースが節約されます。特定のクラスのオブジェクトを 1 つだけシステム内に存在させたい場合は、シングルトン パターンが最適なソリューションです。

__new__() は __init__() の前に呼び出され、インスタンス オブジェクトの生成に使用されます。このメソッドの特性とクラス属性を利用して、デザインパターンのシングルトンパターンを実装することができます。シングルトン モードとは、一意のオブジェクトを作成することを指します。シングルトン モードで設計されたクラスはインスタンス化のみ可能です。これは間違いなく一般的なテストです。 1~2の方法は必ず覚えてください 面接官からは手書きで書くように言われました。

__new__ メソッドを使用します

クラス シングルトン (オブジェクト):

def __new__ (cls, *args, **kw):

if not hasattr (cls, '_instance ') :
orig = super(シングルトン, cls)
cls._instance = orig.__new__(cls, *args, **kw)
return cls._instance
class MyClass(シングルトン):
a = 1

共有属性

インスタンスを作成するときは、すべてのインスタンスの __dict__ が同じディクショナリを指すようにして、同じ属性とメソッドを持つようにします。

クラス Borg(オブジェクト):

_state = {}

def __new__(cls, *args, **kw):

ob = super (ボルグ、cls)。 __new__(cls, *args, **kw)

ob.__dict__ = cls._state

return ob

class MyClass2 (Borg):

a = 1

デコレータのバージョン

def singleton (cls):

instances = {}

def getinstance(*args, **kw):

cls がインスタンスにない場合:

instances[cls] = cls(*args, **kw)

インスタンスを返す[cls]

getinstanceを返す

@singleton

class MyClass:

importメソッド

Python モジュールとしては、自然なシングルトン モードです

# mysingleton.py

class My_Singleton(object):

def foo(self):

pass

my_singleton = My_Singleton()

# to use

from mysingleton import my_singleton

my_singleton.foo()

59. A と B はそれぞれ 2 つの島にいます。 B は病気で、A は B が必要とする薬を持っています。 Cにはボートとロック可能なチェストがあります。 C さんは A と B の間で物を運びたいと考えていますが、物は箱に入れることしかできません。箱のロックが解除されている限り、箱の中に何が入っていても、C は箱の中身を盗みます。 A と B がそれぞれ、自分の錠しか開けられない鍵と鍵を持っている場合、A はどうやって物を B に安全に届けるべきでしょうか?

答え: A は薬を箱に入れ、自分の鍵で箱に鍵をかけます。 B がボックスを取得した後、ボックスに自分のロックを追加します。箱が A に返送された後、A は自分のロックを取り外します。箱がBに届けられると、Bは自分の錠を外して薬を入手します。

60. 速度の異なる 25 頭の馬がいますが、各馬の速度は固定値です。現在、トラックは 5 つしかなく、時間を計測する方法がないため、各レースで最大 5 頭の馬の相対速度しか知ることができません。 25 頭の中から上位 3 頭までの速い馬を見つけるには、最低何レースすればよいですか?

答え: どの馬にも少なくとも 1 回は出場機会が必要なので、25 頭の馬が 5 つのグループに分けられ、最初の 5 試合は避けられません。次のチャンピオンを見つけるのは簡単で、各グループのチャンピオンは 1 つのゲーム (ゲーム 6) で一緒にプレイできます。最後は2位と3位を見つけることです。第6試合で得られた順位に従って、最初の5試合で所属していたグループをA、B、C、D、Eと名付けた。つまり、グループ A のチャンピオンは第 6 レースの 1 位であり、グループ B のチャンピオンは第 6 レースの 2 位です。各グループの 5 頭の馬は、以前のレースに従って速いものから遅いものまで番号が付けられます。結果:

グループ A: 1、2、3、4、5

グループ B: 1、2、3、4、5

グループ C: 1、2 、3、4、5

グループ D: 1、2、3、4、5

グループ E: 1、2、3、4、5

今の情報から、どの馬が3着から外されたのかが分かります。この馬よりも速い馬が3頭以上いると判断できれば除外となる。上の表で太字の青色の馬 5 頭のみが 2 位または 3 位にランクされる可能性があることがわかります。つまり、グループ A の 2 位と 3 位、グループ B の 1 位と 2 位、グループ C の 1 位です。第7試合はこの5頭で、第7試合の上位2頭が25頭中2、3着となります。したがって、合計で少なくとも 7 つのゲームがあります。











#

以上がPythonの面接の質問と回答60選!年明け以降の就職活動の必読書の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。