一个输入的多个输入

时间:2016-04-16 11:34:07

标签: python python-3.x

我正在编写一个函数来将输入附加到列表中。我想要它,以便在您输入union时,列表变为struct而不是280 2

4 个答案:

答案 0 :(得分:8)

>>> number, factor = input().split()
280 2
>>> [number]*int(factor)
['280', '280']

请记住,如果您的列表包含可变元素,则将列表与自身与*运算符连接可以unexpected results - 但在您的情况下,它可以正常使用。

编辑:

无需因素即可处理输入的解决方案:

>>> def multiply_input():
...     *head, tail = input().split()
...     return head*int(tail) if head else [tail]
... 
>>> multiply_input()
280 3
['280', '280', '280']
>>> multiply_input()
280
['280']

根据需要添加错误检查(例如,对于空输入)。

答案 1 :(得分:2)

from itertools import repeat

mes=input("please write your number and repetitions:").split()
listt= []
listt.extend(repeat(int(mes[0]), int(mes[1]))   

#repeat(object [,times]) -> create an iterator which returns the object
#for the specified number of times.  If not specified, returns the object
#endlessly.

答案 2 :(得分:2)

您可以通过使用包含1的列表扩展已解析的输入来处理具有未指定重复次数的情况。然后,您可以对列表进行切片以保留前2项(如果提供了重复次数,则{{1将被丢弃)

[1]

答案 3 :(得分:0)

此代码提供异常处理,而不会使用in in提供第二个数字。

public class MyEventArgs: EventArgs, IDeferralSource
{
  private readonly DeferralManager _deferralManager;
  public MyEventArgs(DeferralManager deferralManager)
  {
    _deferralManager = deferralManager;
  }
  public bool Change { get; set; }
  public IDisposable GetDeferral() { return _deferralManager.GetDeferral(); }
}

public class MessageReceiver
{
  protected async Task OnMyEventAsync()
  {
    if (MyEvent != null)
    {
      DeferralManager deferralManager = new DeferralManager();
      MyEventArgs e = new MyEventArgs(deferralManager);
      MyEvent(this, e);
      await deferralManager.WaitForDeferralsAsync();
    }
    if (e.Change)
      Console.WriteLine("Change occured");
  }
}

public class Form
{
  private async void Mr_MyEvent(object sender, MyEventArgs e)
  {
    using (e.GetDeferral())
    {
      string s = await GetString();
      e.Change = true;
    }
  }
}