【问题标题】:Fill a list with user input via a for loop通过 for 循环用用户输入填充列表
【发布时间】:2020-06-07 00:22:57
【问题描述】:

我知道一些基本的 C++ 并且我了解如何通过 for 循环使用用户输入填充数组,但我想知道如何在 Python 3 中完成该任务。我四处张望但无法真正理解其他人回答这个问题的方式。

int size = 0;
cout << "Enter size: " << endl;
cin >> size;
array[size] = {0};
for (int i = 0; i < size; i++)
    cin >> array[i];

希望有人可以用简单的方式向我解释这一点。如您所知,我大约在 5 到 6 个月前开始使用 C++,并在本月中旬左右开始使用 Python3。

谢谢!

【问题讨论】:

    标签: python c++ arrays python-3.x list


    【解决方案1】:

    C++ 中您需要先定义数组大小,在python 列表中您不需要这样做,当您向它们添加元素时它们会相应地增长。例如要在python 中编写代码,我会编写这样的等效代码(我添加了print 语句来演示a_list 的增长):

    size = int(input("Enter size: "))  # for input 3
    a_list = []
    for i in range(size):
        a_list.append(input())  # for input 1, 2, 3
    
    print('python list:', a_list)
    
    >>> python list: ['1', '2', '3']
    

    【讨论】:

    • 我运行了这个python代码,它很好地演示了这个例子!老实说,我可以将多少行输入到一个列表中并对该列表进行排序,这真是太疯狂了,而在 C++ 中,您将有 4 个循环来完成这些任务!我还要看看 range 有什么作用,我以前从未见过!
    • @Bowen 看看这个:a_list = [ input() for i in range(int(input("Enter size: ")))]
    • @juanpa.arrivillaga,哈哈,谢谢你的搞笑? 一个班轮。 Python 真的很疯狂,我才刚开始学,过去 5 个月我一直在课堂上学习 C++,你可以用如此少的代码用 Python 做的事情的数量令人印象深刻。
    【解决方案2】:

    首先,关于您编写​​的 C++ 部分,我想说一件事。

    C++官方不支持这部分:

    cin >> size;
    array[size] = {0};
    

    可变长度数组 (VLA) 在 C99 中有效,并且可能与某些 C++ 编译器一起作为 C 扩展使用,但它不是该语言的官方部分。在 C++ 中不应使用它们,因为它可能导致代码不可移植。请改用std::vector 之类的东西。

    请记住,上面突出显示的代码部分中使用的语法无效。首先缺少一个类型,任何形式的默认初始化都对 VLA 无效。

    主题:

    size = int(input('Size:'))
    my_array = []
    
    for i in range(size):
        val = int(input())
        my_array.append(val)
    

    【讨论】:

    • 所以你是说我不应该使用“using namespace std”?
    • 哦,对不起,我忘了在我说的地方加上名字。我说的是 VLA(可变长度数组),它是 C 语言(版本 99,称为 C99)的一部分。这些不是 C++ 语言的一部分,但有时被某些编译器支持为 C 扩展。您可能想在这里阅读更多关于它的信息:stackoverflow.com/questions/1887097/…
    • array[size] = {0} 在 C 中几乎可以肯定是无效的,包括 C99。这是一项任务,而不是 VLA 的定义。在 C++ 中,它的含义取决于之前如何定义 array(例如它的元素是什么),但结果几乎可以肯定是可诊断的错误或未定义的行为。
    • @Peter 您对缺少类型的初始化是正确的,但是使用 VLA 在 C99 中是有效的。我试图说清楚,但是当再次阅读我的评论时,我注意到我什至没有提到“VLA”。在上面的评论中,我已经尝试解释我评论的重点。
    猜你喜欢
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 2020-05-25
    相关资源
    最近更新 更多