Pythonの入力ストリームの単純な探査

今年のブルーブリッジカップは、新しいPythonのゲームを追加して、CCF-CSPの認定は、今も、Python言語、私のパートナーとのタイトルを行うためのアルゴリズムを使用することを選択したいくつかの小さなpyhton周りを使用することができます。私は不快感をたくさん持っている、遭遇した最初の問題は、PythonのですのpythonにC / C ++から返された入力問題


私は、スペースで区切られた2つの整数を入力し、簡単な例を挙げてみましょう
Cで非常に単純な実装では++

int a,b;
cin>>a>>b;

C ++の入力ストリーム>>サポートは、キャリッジリターン入力で区切られていないだけでも、支持体には、スペースで区切って入力し、Enter
ちょうど私がこの先入観を持っているのpython、まさにそのようなPythonのコードを書く学び始め

a=input()
b=input()
print(a)
print(b)

書かれた文法は、入力12を実行し、問題ありませんが、私は2を押して入力したときにキーを入力し、カーソルを入力するようにプロンプ​​ト私に継続されます、私は無意識のうちに次の出力をEnterキーを押し、これはで表示されます二行1及び2は、実際の行に登場します

1 2

(b)は、印刷を削除、プログラムを変更します

print(a)

プログラムを実行するには、12を入力し、[実行]をクリックします

1 2

結果は変わらず、明らかに1、スペースは、両方の2に割り当てられ
、なぜそのような結果があると、私はそれについての問い合わせを助けるためにここにいます

>>> help(input)
Help on built-in function input in module builtins:

input(prompt=None, /)
    Read a string from standard input.  The trailing newline is stripped.
    
    The prompt string, if given, is printed to standard output without a
    trailing newline before reading input.
    
    If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
    On *nix systems, readline is used if available.

読むstring標準入力からは、それは非常に明確に説明しています。フレーズ、入力は()文字列のリード。言い換えれば、私はスペースバーでなく、押したときだけの末、このアクションの()現在の、A =入力を、私は2つのbが受けているので、キーボードから次の2つの入力を読み続けます。
私はPythonシェル上でのテストを続けます

>>> a=input()
1 2
>>>print("a=",a,"\na's type is",type(a))
a= 1 2
a's type is <class 'str'>

Pythonの入力は、()Cのようなビットである++ cin.getline()、あなたがスペースを含む文字列を受け入れることができ、Enterキーを押して、現在の入力の終了前に入力します。
あなたの入力が整数である場合でも、浮動小数点、自動的に文字列に変換されます

I PAT(初級)練習はそれを行う方法OJで私の出会いこのような問題(スペースを入力)を練習するタイトルにOJを探して

1010単変量多項式の導出

多項式の誘導体の単項設計機能。(注:X ^ n(nは整数である)NX ^ N-1の一次導関数の)
入力フォーマット
ように多項式係数および指数非ゼロ指数入力を降順(整数千の両方の絶対値を超えません)。する数字の間に空格分けます。
出力フォーマット:
多項式の係数の同じ入力フォーマット出力誘導体および非ゼロエントリのインデックスを有します。数字の間にスペースで区切られたが、最終的には、余分なスペースを持つことができません指数係数の「ゼロ多項式が」0であるが、00として表されることに留意されたいです。
サンプル入力:
34-5261-20
出力サンプル:
123から10160

[OK]を、非常にOJ簡単な質問をタイトル感触を読みますが、1週間だけのC ++の完全なPythonの頭を学んでいたことはちょうど私が長い時間のために頭痛を入力してみましょう、私にとっては容易ではありません。私は慎重に戻って一瞬の思考に、問題は、私は()の変数に割り当てられている入力に持っているということである字符串明確なコンセプトで

まあ、今はその入力()入力文字列、次の文字列の操作ですが、文字が直接操作は非常に鈍いであり、私が最初に使用されていると信じsplit()に変換し列表、その文字を変換し、整数、とのギャップを埋めるためのアクションのリストの残りの部分

st=input()
s=[int(x) for x in st.split()]
result=[]
for i in range(0,len(s),2):
    if s[i+1]!=0:
        result.append(str(int(s[i]*s[i+1])))
        result.append(str(s[i+1]-1))
if len(result)==0:
    print('0 0')
else:
    print(' '.join(result))

実際には、ときに熟練のpython、2の前に次のコードを簡素化することができます

s=[int(x) for x in input().split()]

入力は、()は、文字列、.splitの大胆な使用()だけで結構です

)(入力を強化するためには、それの概念という文字列ですが、私は質問を準備しました

皮肉な1009

プログラムを書くためにあなたを求めて、英語の単語を考えると、文の順序のすべての単語は、出力を逆転させました。
入力フォーマット:
テストケースを含むテスト入力、文字列の長さは、行80の合計を超えない所与。いくつかの単語や文字列からなる単語は、英語の文字であるスペースの数、(場合はそうである)、からなる文字列は、余分なスペースを確保しないように、単語間のスペースで文の入力端を分離しました。
出力形式:
ラインあたり各テストケースの出力、反転後の出力文。
サンプル入力:
Hello Worldのここでは、私の来
サンプル出力を:
ここでのHello WorldをI是非します

コードの私の繰り返し変更した後、最終的な答えだけで1行

print(' '.join(input().split()[::-1]))

有する第一split()の入力は()に変換され字符串列表、その後、使用する切片[::-1]「」.join()に逆の順序を、リスト内の最後の文字の字符串出力、出力ストリームの入力、文字列のリストとの間の融合線変換、パイソン本当にスムーズにそれを使用します


これは、ヴィートオリジナルのブログでは秒です、そして私のpythonを学ぶの少し経験を紹介していきます。CSDN上でブログを公開することに加えて、私はになりますコンピュータサイエンスや鉱物資源計画の偉大な遺産(CUMTCSの資源継承計画)このGitHubのライブラリ資源・素材を学ぶことは私のブログを共有します

リリース3元の記事 ウォンの賞賛4 ビュー388

おすすめ

転載: blog.csdn.net/weixin_43608722/article/details/104306943