Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用伪值编写伪代码_Python_Algorithm_Pseudocode - Fatal编程技术网

Python 使用伪值编写伪代码

Python 使用伪值编写伪代码,python,algorithm,pseudocode,Python,Algorithm,Pseudocode,从键盘输入一系列数字时需要伪代码,以确保它们按升序排列,即使它们不需要是连续的。数字可以是正的,也可以是负的,并以9999的伪值结束 这是我写的python代码,它工作正常 li=[] num=int(raw_input("Enter number")) while num!=9999: li.append(num) num=int(raw_input("Enter number")) new=0 print "Entered sequence is " print li

从键盘输入一系列数字时需要伪代码,以确保它们按升序排列,即使它们不需要是连续的。数字可以是正的,也可以是负的,并以9999的伪值结束

这是我写的python代码,它工作正常

li=[]
num=int(raw_input("Enter number"))
while num!=9999:
    li.append(num)
    num=int(raw_input("Enter number"))
new=0   
print "Entered sequence is "
print li
j=0
while j<len(li):
    for i in range(len(li)-1):
        value1=li[i]
        value2=li[i+1]

        if (value1>value2):
            new=li[i]
            li[i]=li[i+1]
            li[i+1]=new
    j+=1
print "ordered list is "
print li
li=[]
num=int(原始输入(“输入数字”))
而num=9999:
li.append(num)
num=int(原始输入(“输入数字”))
新=0
打印“输入的序列为”
打印李
j=0
而jvalue2):
new=li[i]
li[i]=li[i+1]
li[i+1]=新
j+=1
打印“已订购列表为”
打印李
但我在把它作为一个算法来写时遇到了问题

这是我尝试过的算法:

Main
    li      list
    num     integer
    new=0,j=0       integer
    Begin   
        num=INPUT num.
        while num<>9999.
            append num to li.
            num=INPUT num.
        ENDWHILE.
    DISSPLAY "Entered Sequence is".
    OUTPUT li.
    while j<(length of li).
        FOR i=0 to (length of li-2).
        value1=i th element of li
        value2=(i+1) th element of li
            if (value1>value2):
                new=value1
                value1=value2
                value2=new
            ENDIF
        END FOR
        j=j+1
    ENDWHILE
    DISPLAY "ORDERED LIST IS"
    DISPLAY li
    END
END
Main
李表
整数
new=0,j=0整数
开始
num=输入num。
而num9999。
将num附加到li。
num=输入num。
结束时。
DISSPLAY“输入的序列为”。
输出li。
而jvalue2):
新=值1
值1=值2
值2=新
恩迪夫
结束
j=j+1
结束时
显示“已排序列表为”
显示李
结束
结束
我可以在算法中使用“list”吗?因为我认为作为“list”的对象不会出现在每种编程语言中。而且算法不应该是通用代码。在编写算法时也可以使用数组

可以说“value1=li中的第i个元素”吗

以及如何显示我正在将从键盘输入的值分配给变量“num”(这最初是一个注释)

您似乎忽略了伪代码的意义。伪代码既没有标准化,也没有多少定义。一般来说,它只是一种类似代码的算法表示,同时保持较高的级别和可读性。您可以用任何形式编写伪代码。即使是真正的Python代码也可以被视为伪代码。也就是说,伪代码中没有不允许的东西;你甚至可以写散文来解释发生的事情。例如,在最内部的循环中,您可以只写“swap value1和value2”

这大概就是我将Python代码转换为伪代码的方式。我倾向于忽略所有特定于语言的东西,只关注实际的算法部分

输入:
列表:输入数字的数组
对于j=0至长度(列表):
对于i=0到长度(列表)-1:
如果列表[i]>列表[i+1]:
交换清单[i]和清单[i+1]
输出有序列表

所以,在伪代码中使用列表、元组和字典可以吗,即使它们不是所有编程语言都通用的


绝对是!在更复杂的算法中,你甚至会发现像“为XY获取最小生成树”这样的东西,这将是一个完全不同的问题,对于这个问题,同样存在多个不同的解决方案。您没有指定特定的解决方案,而是将其向实际实现开放,以使用哪种算法来实现该解决方案。这通常与您当前描述的算法无关。也许以后当你分析你的算法时,你可能会提到诸如“有一些已知的算法可以在O(logn)中实现这一点”之类的东西,所以你只需使用它来继续。

你不是在写算法,而是在写伪代码。你到底有什么问题?有各种各样的惯例,没有一个正确的答案。我以前曾试图与教科书中的风格保持一致(例如算法简介),但这实际上取决于你为谁写这篇文章。我同意,我认为你的Python代码是非常明确的,即使读者不知道Python,并且大部分都可以作为伪代码使用。对于一般读者来说,我唯一能想到的是,他们可能不知道什么是<代码>范围>代码>。因此,在伪代码中使用列表、元组、字典是可以的,即使它们对于所有的编程语言来说都不常见。