这是一个家庭作业问题,它会问"选择一个字.请用户输入一个字母.检查字母中出现的字母数,然后在屏幕上输出数字." 到目前为止,我已按原样编写,似乎工作正常:
word = str("python")
letters = len(word)
attempt = str(raw_input ("Enter a letter: "))
while attempt in word:
count = "python".count(attempt)
if attempt in word:
print "This letter is present ",count, "time(s)."
attempt = str(raw_input ("Enter another letter: "))
while attempt not in word:
attempt = str(raw_input ("This letter is not present, enter another letter: "))
count = "python".count(attempt)
if attempt in word:
print "This letter is present ",count, "time(s)."
Run Code Online (Sandbox Code Playgroud)
但偶尔如果我输入信件,程序将停止,不再需要更多输入.我究竟做错了什么?如果代码非常草率并且编写得很糟糕,我很抱歉,因为我是编程新手.谢谢.
我不确定这是否是你得到的,但你的while循环将一个接一个地执行.它们并非都适用于所有时间.所以第一个while意味着"只要用户输入单词中的字母就继续这样做",只要用户输入单词中的字母,该循环就会继续执行.一旦用户输入一个不在单词中的字母,循环就会结束,并且事情将继续进行到第二个循环.执行永远不会回到第一个循环.同样,在第二循环一次,如果再输入一个字母即是这个词,循环将结束.由于这是该计划的结束,该计划将结束.
因此,如果您输入的字母不在单词中,则输入单词中的字母,程序将结束.就像你先输入"x"然后输入"y"一样,它会停止.
我觉得你真正想要的更像是:
while True:
attempt = raw_input("Enter a letter:")
if attempt in word:
print "That was in the word", word.count(attempt), "times"
else:
print "That was not in the word"
Run Code Online (Sandbox Code Playgroud)
当然,这个程序将无限循环,直到你通过按Ctrl-Break等关闭它.
您的代码还有其他一些问题.你不需要包含"python" str,因为它已经是一个字符串.您也不需要包装raw_input字符串,因为raw_input已经返回一个字符串.您定义了一个名为letters但从不使用它的变量.
此外,您word = "python"在开头定义,但有时稍后您使用该word变量,而有时您在代码中重新键入字符串"python".这个程序无关紧要,但总的来说,最好将变量分配一次并在任何地方使用它; 如果您决定使用不同的单词,则必须在许多地方更改它,这会增加您忘记在一个地方更改它的可能性,从而导致错误.
最后,注意in与count上串,而不仅仅是单个字母进行操作.所以输入"yth"作为你的输入仍然会起作用并给出1的计数.这并不一定有任何问题,但你应该知道,虽然你要求信件,但是人们可以输入任何东西,以及子串任何长度仍然可以在"单词"中找到.
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |