Where am I messing up with output formatting?(我在哪里弄乱了输出格式?)
问题描述
因此,当我尝试运行我的代码时收到一条错误消息,但我无法弄清楚究竟是什么问题.它说这是一个 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.
这篇关于我在哪里弄乱了输出格式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:我在哪里弄乱了输出格式?
基础教程推荐
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 筛选NumPy数组 2022-01-01