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

此外,当我像往常一样手动输入代码时,我会收到此错误。我看不出我犯了什么错误:

导入 ex25 Traceback(最近一次调用最后):文件“”,第 1 行,文件“ex25.py”,第 1 行语法错误:文件 ex25.py 第 1 行中的非 ASCII 字符“\xff”,但未声明编码; eps/pep-0263.html 了解详情

这是我的手册副本(ex25):

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”或等效项(应该在settingsor中的某个位置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 回答