【问题标题】:How do I write a string array in python?如何在 python 中编写字符串数组?
【发布时间】:2014-05-11 21:58:08
【问题描述】:

正如我的名字所暗示的那样,我在这方面完全是新手,并在我的大学上了一门低级编码课程。我应该写一个程序来接受 20 个名字,然后按字母顺序排序。

我一直在处理这里的问题,直到这个计划为止,他们都提供了帮助。我找到了一个建议的代码

    strs = ["" for x in range(20)]

所以我就这样修改了

    def main():
        names = ["" for x in range (20)]

        names = getNames(names)
        displayInfo(names)

    def getNames(names)
        counter = 0
        while counter < 20:
            names[counter] = input("Enter a name: ")
        return names

但是如果我输入一个名字(比如“Amber”),我会收到这样的错误消息

    NameError: name 'Amber' is not defined

我将如何纠正这个问题?我的书只用伪代码说话,我的老师不太擅长教学。感谢这个网站,我的大部分作业都完成了。

【问题讨论】:

  • 使用raw_input 而不是input
  • 嗯,这很尴尬...感谢您指出这一点!
  • 如果我的回答有效,你介意接受吗?

标签: python arrays string


【解决方案1】:

你有几个问题:

  1. 正如 brenbarn 指出的,您应该在 Python 2.x 中使用 raw_input
  2. 你有一个SyntaxError(缺少:);和
  3. 你永远不会增加counter

此外,在 for 可以使用 while 的地方使用 while 是不好的做法,并且不需要像那样初始化列表。相反,我会建议:

def main():
    names = getNames(20)
    displayInfo(names)

def getNames(n):
    names = []
    for _ in range(n):
        names.append(raw_input("Enter a name: "))
    return names

【讨论】:

    【解决方案2】:

    在 Python-2.x 中接受输入时,应使用 raw_input() 而不是 input()input() 按字面意思接受输入,所以它只接受可以在 shell 中调用的东西:

    >>> import sys
    >>> print sys.version_info[0:3]
    (2, 7, 6)
    >>> Amelia
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'Amelia' is not defined
    >>> name = input('Enter your name: ')
    Enter your name: Amelia
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<string>", line 1, in <module>
    NameError: name 'Amelia' is not defined
    >>> name = raw_input('Enter your name: ')
    Enter your name: Amelia
    >>> 
    

    改为将您的代码更改为以下内容:

    def main():
        names = sorted([raw_input("Enter a name: ") for i in range(20)]) #You can change the 20 to however many names you want
        for i in names: print i
    

    运行如下:

    >>> main()
    Enter a name: Bob
    Enter a name: Joe
    Enter a name: Sally
    Enter a name: Jimmy
    Enter a name: Cole
    Enter a name: Brian
    Enter a name: Ronald
    Enter a name: Harry
    Enter a name: Henry
    Enter a name: Dylan
    Enter a name: Coby
    Enter a name: Jodie
    Enter a name: Billy
    Enter a name: Walter
    Enter a name: Sue
    Enter a name: Leon
    Enter a name: Francis
    Enter a name: Angela
    Enter a name: George
    Enter a name: Amelia
    Amelia
    Angela
    Billy
    Bob
    Brian
    Coby
    Cole
    Dylan
    Francis
    George
    Harry
    Henry
    Jimmy
    Jodie
    Joe
    Leon
    Ronald
    Sally
    Sue
    Walter
    >>> 
    

    这使用列表推导来获得一定次数的输入:

    >>> names = [raw_input("Enter a name for person number %d: " %(i)) for i in range(1, 6)]
    Enter a name for person number 1: Angela
    Enter a name for person number 2: Amelia
    Enter a name for person number 3: Joe
    Enter a name for person number 4: John
    Enter a name for person number 5: Sam
    >>> names
    ['Angela', 'Amelia', 'Joe', 'John', 'Sam']
    >>> 
    

    【讨论】:

    • 哦,哇,非常感谢!这比我尝试做的要容易得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 2015-04-09
    • 2021-06-17
    • 2021-04-23
    • 2012-09-23
    相关资源
    最近更新 更多