我正在编写一个函数来将输入附加到列表中。我想要它,以便在您输入union
时,列表变为struct
而不是280 2
。
答案 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;
}
}
}