Q: ValueError:在创建pygame项目时未找到子字符串



我正在做一个项目来创建一个鼓机。我在用python做pygame。我得到了这个异常-

pygame 2.1.2 (SDL 2.0.18, Python 3.8.0)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "C:UsersDellAppDataLocalProgramsPythonPython38librunpy.py", line 192, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:UsersDellAppDataLocalProgramsPythonPython38librunpy.py", line 85, 
in _run_code
exec(code, run_globals)
File "c:UsersDell.vscodeextensionsms-python.python-2022.6.2pythonFileslibpythondebugpy__main__.py", line 45, in <module>
cli.main()
File "c:UsersDell.vscodeextensionsms-python.python-2022.6.2pythonFileslibpythondebugpy/..debugpyservercli.py", line 444, in main
run()
File "c:UsersDell.vscodeextensionsms-python.python-2022.6.2pythonFileslibpythondebugpy/..debugpyservercli.py", line 285, in run_file
runpy.run_path(target_as_str, run_name=compat.force_str("__main__"))
File "C:UsersDellAppDataLocalProgramsPythonPython38librunpy.py", line 262, in run_path
return _run_module_code(code, init_globals, run_name,
File "C:UsersDellAppDataLocalProgramsPythonPython38librunpy.py", line 95, 
in _run_module_code
_run_code(code, mod_globals, init_globals,
File "C:UsersDellAppDataLocalProgramsPythonPython38librunpy.py", line 85, 
in _run_code
exec(code, run_globals)
File "c:UsersDellDocumentsMy beatMakerMy beats app.py", line 228, in <module> 
exit_button, loading_button, delete_button, load_rectangle = draw_load_menu()    
File "c:UsersDellDocumentsMy beatMakerMy beats app.py", line 157, in draw_load_menu
name_index_start = saved_beats[beat].index('name: ') + 6
ValueError: substring not found

我是pygame的初学者,我正在通过freecodecamp.org学习。我曾试图从我的手修复这个错误,没有工作。这是我的主文件-

<标题>main.py h1> 看是否有什么问题。我将尽力改正我的错误。

感谢

这似乎是一个模糊的问题。不知道里面的内容

saved_beats.append(f'nname: {beat_name}, beats: {beats}, bpm: {bpm}, selected: {clicked}')
for i in range(len(saved_beats)):
file.write(str(saved_beats[i]))

你有一个开头有n的f字符串,当它被写入文件时,会产生如下内容:


name: foo, beats: 3, bpm: 10, selected: bar
name: foo, beats: 3, bpm: 10, selected: bar
name: foo, beats: 3, bpm: 10, selected: bar
.
.
.

注意开头的空行。

您可以将n移动到行尾。

saved_beats.append(f'name: {beat_name}, beats: {beats}, bpm: {bpm}, selected: {clicked}n')

或者如果你必须保持特定的格式:

改变:

if beat < 10:
beat_clicked = []
row_text = medium_font.render(f'{beat + 1}', True, white)
screen.blit(row_text, (200, 100 + beat * 50))
name_index_start = saved_beats[beat].index('name: ') + 6
name_index_end = saved_beats[beat].index(', beats:')
name_text = medium_font.render(saved_beats[beat][name_index_start:name_index_end], True, white)
screen.blit(name_text, (240, 100 + beat * 50))

if beat < 10:
beat_clicked = []
if saved_beats[beat].startswith("name:"):
row_text = medium_font.render(f'{beat + 1}', True, white)
screen.blit(row_text, (200, 100 + beat * 50))
name_index_start = saved_beats[beat].index('name: ') + 6
name_index_end = saved_beats[beat].index(', beats:')
name_text = medium_font.render(saved_beats[beat][name_index_start:name_index_end],
True, white)
screen.blit(name_text, (240, 100 + beat * 50))

如果行不是以。开头,将跳过所有屏幕更改name:.

您也可以将if条件更改为:

if len(saved_beats[beat].strip()) > 0:

最新更新