我在哪里弄乱了输出格式?
问题描述
因此,当我尝试运行我的代码时收到一条错误消息,但我无法弄清楚究竟是什么问题.它说这是一个 ValueError 但我无法确定到底是哪一个.或许只是来晚了,但我不知所措.
So I got an error message when I tried to run my code and I can't figure out what exactly the problem is. It says it's a ValueError but I can't figure out which one exactly. Maybe it's just late, but I am at a loss.
这是我的代码:
def sort(count_dict, avg_scores_dict, std_dev_dict):
'''sorts and prints the output'''
menu = menu_validate("You must choose one of the valid choices of 1, 2, 3, 4
Sort Options
1. Sort by Avg Ascending
2. Sort by Avg Descending
3. Sort by Std Deviation Ascending
4. Sort by Std Deviation Descending", 1, 4)
print ("{}{0:27}{0:39}{0:51}
{}".format("Word", "Occurence", "Avg. Score", "Std. Dev.", "="*51))
if menu == 1:
dic = OrderedDict(sorted(word_average_dict.items(), key=lambda x:x[1], reverse=False))
for key in dic:
print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key]))
elif menu == 2:
dic = OrderedDict(sorted(word_average_dict.items(), key=lambda x:x[1], reverse=True))
for key in dic:
print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key]))
elif menu == 3:
dic = OrderedDict(sorted(std_dev_dict.items(), key=lambda x:x[1], reverse=False))
for key in dic:
print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key]))
elif menu == 4:
dic = OrderedDict(sorted(std_dev_dict.items(), key=lambda x:x[1], reverse=True))
for key in dic:
print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key]))
return None
这是我运行时的输出和错误:
Here's my output and error when I run it:
You must choose one of the valid choices of 1, 2, 3, 4
Sort Options
1. Sort by Avg Ascending
2. Sort by Avg Descending
3. Sort by Std Deviation Ascending
4. Sort by Std Deviation Descending1
Traceback (most recent call last):
File "C:UsersRyanDocumentsProgram 7Program 7.py", line 161, in <module>
output = sort(cnt_dict, word_avg_dict, std_dev_dict)
File "C:UsersRyanDocumentsProgram 7Program 7.py", line 99, in sort
print ("{}{0:27}{0:39}{0:51}
{}".format("Word", "Occurence", "Avg. Score", "Std. Dev.", "="*51))
ValueError: cannot switch from automatic field numbering to manual field specification
我在搞砸什么?感谢您提供任何和所有帮助!
What am I messing up? Any and all help is appreciated!
解决方案
您不能在自动字段编号(通过指定简单的 {}
获得的结果)和手动字段之间来回切换规范,例如{0}
.如果您希望同一个字段重复多次,如 'Word'
在您的示例中,您还必须指定您希望其他字段是什么.例如,您可能希望从第一个参数 'Word'
(即元素 0
)和第五个参数 '='*51
,作为最后一个,即元素4
:
You can't switch back and forth between automatic field numbering - what you get by specifying a simple {}
- and manual field specification, e.g. {0}
. If you want the same field repeated several times, as 'Word'
is in your example, you'll have to also specify what you want the other fields to be. For example, you might want to start with the first argument, 'Word'
, which is element 0
, and the fifth argument, '='*51
, as the last, which is element 4
:
>>> print("{0}{0:27}{0:39}{0:51}
{4}".format("Word", "Occurence", "Avg. Score", "Std. Dev.", "="*51))
WordWord Word Word
===================================================
您必须自己决定要将哪些参数放在格式字符串中的哪个位置.
You'll have to decide for yourself which arguments you want to be placed where in the format string.
相关文章