列表未按BubbleSort排序

时间:2017-01-02 19:16:10

标签: python list sorting tuples bubble-sort

有一个bubbleort程序,我希望电子邮件按字母顺序排序。但是,当我使用List运行程序时,我希望对其进行排序,我得到错误TypeError:' tuple'对象不支持项目分配。 这是代码:

def BubbleSort(logindata):
    NoSwaps = 1
    N = len(logindata)
    while NoSwaps == 1:
        Count = 1
        NoSwaps = 0
        for Count in range(N-1):
            if logindata[Count] > logindata[Count+1]:
                temp = logindata[Count]
                logindata[Count] = logindata[Count+1]
                logindata[Count+1]=temp
                NoSwaps=1
    return logindata

if __name__ == "__main__":
    logindata=["tom@gmail.com","Password1"],["Harry","Password2"],["Jake","Password3"]
    BubbleSort(logindata)
    print(logindata)

该程序在没有“密码”的情况下对列表进行排序。我如何让代码运行并成功对其进行排序。

2 个答案:

答案 0 :(得分:2)

假设您的冒泡排序算法正常运行,您的问题是您无法在tuple中分配项目,在尝试logindata[count] = logindata[count+1]时,您可以将logindata更改为list然后返回tuple的{​​{1}},并且你应该捕获返回的logindata然后打印它,整个代码看起来像这样:

logindata

答案 1 :(得分:0)

此代码将运行并对列表进行排序。但是我不知道这是否是您想要的方式。

   public frmItem(string s)
{
    InitializeComponent();
    txtTry.Text = s;
}

    private void button1_Click(object sender, EventArgs e)
    {
        if (this.Text == "EDIT")
        {         
            cmd.Connection = cn;
            cmd.CommandText = string.Format("Update Items Set (Barcode='" + txtcode.Text + "' ,Productname= '" + txtitemname.Text + "',Prices= '" + txtPrices.Text + "' ,Quantity= '" + txtquantity.Text + "' ,Brand= '" + txtbrand.Text + "',Expiry= '" + txtexpiry.Text + "',Description='" + txtdescription.Text + "' ,Critical= '" + txtcritical.Text + "' Barcode  = '" + txtTry.Text + "')", cn);
            cmd.ExecuteNonQuery();
            MessageBox.Show("Records Updated!");
            txtcode.Text = "";
            txtitemname.Text = "";
            txtPrices.Text = "";
            txtquantity.Text = "";
            txtbrand.Text = "";
            txtexpiry.Text = "";
            txtdescription.Text = "";
            txtcritical.Text = "";

        }
        else
        {
            MessageBox.Show("Invalid");
        }            

    }