如何用python编写字符串数组?

2024-06-01 00:47:23 发布

您现在位置:Python中文网/ 问答频道 /正文

正如我的名字所暗示的,我对这一点完全陌生,在我的大学里上了一门低级编码课。我应该写一个程序,接受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

我该怎么纠正这个问题呢?我的书只讲伪代码,我的老师不太擅长教学。多亏了这个网站,我的大部分作业都完成了。你知道吗


Tags: 代码namein程序编码fornamesdef
0条回答
网友
1楼 · 发布于 2024-06-01 00:47:23

你有几个问题:

  1. 正如brenbarn指出的,您应该在python2.x中使用raw_input
  2. 您有一个SyntaxError(缺少:);并且
  3. 你从不增加counter。你知道吗

而且,在for可以使用的地方使用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楼 · 发布于 2024-06-01 00:47:23

在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']
>>> 

相关问题 更多 >