python - TypeError:左操作数必须是 str
问题描述
我正在为 CodeHS 的 Python 入门课程开发一个项目,但我无法弄清楚为什么这部分代码会产生错误消息或根本不起作用。
我试过删除变量破折号,没有它,程序可以正常工作。出于某种原因,这个新变量会导致代码的最后部分出现问题。
secret_word = "banana"
x = 0
dashes = ""
wordlist = list(secret_word)
for x in range(len(secret_word)):
dashes = dashes + "-"
def get_guess():
while x < 1:
guess = input("Guess: ")
if len(guess) > 1:
print "Your guess must have exactly one character!"
elif not guess.islower():
print "Your guess must be a lowercase letter"
else:
return guess
while dashes != secret_word:
print dashes
guess = get_guess()
if guess in wordlist:
print "That letter is in the word"
else:
print "That letter is not in the word"
我希望程序要求输入来猜测单词中的一个字母;但是,该程序要么永远运行,要么我遇到错误消息。该程序未完成;任何帮助修复此错误消息或使其运行更顺利将不胜感激!
解决方案
您x
在这里定义:
secret_word = "banana"
x = 0
dashes = ""
wordlist = list(secret_word)
并在这里重新分配值:
for x in range(len(secret_word)):
dashes = dashes + "-"
那么循环的条件总是False
在这里。所以get_guess()
什么也不做。
def get_guess():
while x < 1:
guess = input("Guess: ")
这是一个很好的例子来说明短变量名和全局变量是多么危险。
推荐阅读
- c# - c#,我如何在windows窗体应用程序中创建这个菜单(附图)
- c++ - Lua:在本机 lua 中编译,但在使用 LuaJIT 和 sol2 的 C++ 中出错
- java - Do-while in try catch
- wpf - 当我打印控件时,它不显示视图模型中的数据
- python - 脚本执行后不会忘记 X 吗?[自动键] [python]
- php - Zend 表达式 - 在处理程序之间传递参数
- r - 如何在几年的时间序列中仅绘制特定月份?
- python - 单个可迭代“list(x)”与“[x]”的列表有什么区别?
- angular - Angular httpClient 拦截器错误处理
- scala - 显示函数在 DataFrame 上失败,出现异常-> 原因:java.io.NotSerializableException: java.lang.Object on MapPartition 的返回对象