1

コードを Python インタープリター (powershell) にインポートできません。私はpowershellを介してpythonを開き、「import ex24」と入力しても何も表示されません。これは、彼のサイトからコピーして貼り付けたコードを使用しています(念のため):

def break_words(stuff):
    """This function will break up words for us."""
    words = stuff.split(' ')
    return words

def sort_words(words):
    """Sorts the words."""
    return sorted(words)

def print_first_word(words):
    """Prints the first word after popping it off."""
    word = words.pop(0)
    print word

def print_last_word(words):
    """Prints the last word after popping it off."""
    word = words.pop(-1)
    print word

def sort_sentence(sentence):
    """Takes in a full sentence and returns the sorted words."""
    words = break_words(sentence)
    return sort_words(words)

def print_first_and_last(sentence):
    """Prints the first and last words of the sentence."""
    words = break_words(sentence)
    print_first_word(words)
    print_last_word(words)

def print_first_and_last_sorted(sentence):
    """Sorts the words then prints the first and last one."""
    words = sort_sentence(sentence)
    print_first_word(words)
    print_last_word(words)

彼がそれを実行すると、次のようになります。

>>> import ex25
>>> sentence = "All good things come to those who wait."
>>> words = ex25.break_words(sentence)
>>> words
['All', 'good', 'things', 'come', 'to', 'those', 'who', 'wait.']
>>> sorted_words = ex25.sort_words(words)
>>> sorted_words
['All', 'come', 'good', 'things', 'those', 'to', 'wait.', 'who']
>>> ex25.print_first_word(words)
All
>>> ex25.print_last_word(words)
wait.
>>> wrods
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'wrods' is not defined
>>> words
['good', 'things', 'come', 'to', 'those', 'who']
>>> ex25.print_first_word(sorted_words)
All
>>> ex25.print_last_word(sorted_words)
who
>>> sorted_words
['come', 'good', 'things', 'those', 'to', 'wait.']
>>> sorted_words = ex25.sort_sentence(sentence)
>>> sorted_words
['All', 'come', 'good', 'things', 'those', 'to', 'wait.', 'who']
>>> ex25.print_first_and_last(sentence)
All
wait.
>>> ex25.print_first_and_last_sorted(sentence)
All
who

また、通常のように手動でコードを入力すると、このエラーが発生します。私が犯した間違いのようには見えません:

import ex25 トレースバック (最新の呼び出しは最後): ファイル ""、行 1、ファイル "ex25.py"、行 1 SyntaxError: ファイル ex25.py の行 1 に非 ASCII 文字 '\xff' がありますが、エンコードが宣言されていません; 詳細はeps/pep-0263.html

これは私のマニュアル コピーです (例 25):

def break_words(stuff):
    """This function will break up words for us."""
    words = stuff.split('  ')
    return words

def sort_words(words):
    """Sorts the words"""
    return sorted (words)

def print_first_word(words):
    """Prints the first word after popping it off"""
    word = words.pop(0)
    print word

def print_last_word(words):
    """Prints the last word after popping it off"""
    word = words.pop(-1)
    print word

def sort_sentence(sentence):
    """Takes in a full sentence and returns the sorted words."""
    words = break_words(sentence)
    return sort_words(words)

def print_first_and_last(sentence):
    """Prints the first and last words of the sentence."""
    words = break_words(sentence)
    print_first_word(words)
    print_last_word(words)

def print_first_and_last_sorted(sentence):
    """Sorts the words then prints the first and last one."""
    words = sort_sentence(sentence)
    print_first_word(words)
    print_last_word(words)
4

1 に答える 1

1

エディターがファイルの先頭にBOMを配置しているようです。これらのマークは、多くのエディターでは表示されません。

BOM は UTF-8 では意味がありません。そのため、「BOM なしの Unicode」または同等の形式で保存するようにエディターを設定するsettingsだけです ( または のどこかにあるはずですpreferences)。

バイト オーダー マーク (BOM) は、テキスト ファイルまたはストリームのエンディアン (バイト オーダー) を示すために使用される Unicode 文字です。U+FEFF バイト オーダー マーク (BOM) でエンコードされます。BOM の使用はオプションであり、使用する場合はテキスト ストリームの先頭に表示する必要があります。

UTF-16 または UTF-32 では、プラットフォームに応じて、16 または 32 ビット単位がビッグ エンディアンまたはリトル エンディアンのバイト順で表現される場合があります。

UTF-8 はバイト単位で格納され、バイトはすべてのプラットフォームで同じであるため、エンディアンを通知しても意味がありません。Unicode 標準が UTF-8 で BOM を許可する理由、さらに最悪の場合、必要でも推奨でもないのに一部の編集者がそれを行う理由は、私の手の届かないところにあります (ばかばかしくてばかげています)。

于 2013-06-15T01:25:13.283 に答える