4

我正在解决的问题

因此,我正在创建一个“澳大利亚”选票应用程序,并且正在寻找输入提示的创造性解决方案。

基本上,用户输入有多少人,然后最多提交 1000 票或 w/e。

假设有 3 个候选人,输入提示将类似于:

ballot = raw_input('1 for %s: 2 for %s: 3 for %s: ') % (cand_list[0], cand_list[1], cand_list[2])

但我真正想提出的是动态提示(假设用户输入 5、10、w/e 候选人数量)

我已经研究过将选票分配和打印分开,或者创建一个完全分开的选票字符串并传递它(假设我可以制作某种 stringbuilder 函数),但我很想看到其他方法。仍在修补它,看看我是否需要转义 % 格式。

Python Stringbuilder(sort of)更多字符串连接

4

3 回答 3

3

像这样使用字符串格式的东西,str.join并且enumerate

>>> candidates = ['foo', 'bar', 'spam']
>>> print ' : '.join('{} for {}'.format(i, c) for i, c in enumerate(candidates, 1))
1 for foo : 2 for bar : 3 for spam

>>> candidates = ['foo', 'bar', 'spam', 'python', 'guido']
>>> print ' : '.join('{} for {}'.format(i, c) for i, c in enumerate(candidates, 1))
1 for foo : 2 for bar : 3 for spam : 4 for python : 5 for guido
于 2013-11-08T18:22:38.343 回答
0

分阶段分别构建您的格式字符串:

inner_format_string = "{num} for %s: "
full_format_string = " ".join(inner_format_string.format(num=i) for i in xrange(1, len(cand_list) + 1))

ballot = raw_input(full_format_string % tuple(cand_list))
于 2013-11-08T18:18:50.590 回答
0
canidates = ["Frank","Bill","Joe","Suzy"]
raw_input(", ".join("Enter %d For %s"%(num,canidate) for num,canidate in enumerate(canidates,1)))

也许

于 2013-11-08T18:19:33.023 回答