python - 为什么我的 python 代码输出错误的东西?
问题描述
words=[]
word=input("Word:")
count=0
while word != '':
count+=1
words.append(word)
word=input("Word:")
for w in words:
if words.count(w)>1:
count-=1
print("You know",count,"unique word(s)")
所以我的代码所做的是,它允许用户输入单词,然后检查他们是否有任何重复的单词;如果他们这样做,那不算数。所以在完成之后,它会告诉你你知道多少个“独特的单词”。
问题是:当没有重复时,它会输出正确数量的“唯一单词”,但是当有重复时,它会输出“正确数量的唯一单词” - 1。所以假设我给出了 3 个单词,其中 2 个是重复;它会说只有 1 个唯一的单词。感谢您的任何帮助。
解决方案
如果您添加print(words)
after可能有助于理解发生了什么words.append(word)
。
发生的事情是word
作为新项目添加到数组中。在你递减的循环中,你递减count
每个不唯一的单词,即如果一个单词出现两次,你递减两次。
Input words count
a [a] 1
a, b [a, b] 2
a, b, b [a, b, b] 1
a, b, b, b [a, b, b, b] -1
a, b, b, c, c [a, b, b, c, c] -3
另一个问题是 for 循环发生在每个输入之后,即您多次递减相同的副本。
不断输入单个单词的程序的固定版本是
words=[]
word=input("Word:")
while word != '':
words.append(word)
word=input("Word:")
uniquewords = set(words)
print("You know",len(uniquewords),"unique word(s)")
推荐阅读
- macos - WebKitWebProcess 制作新的停靠图标
- python - 如何在 Python 中进行并行处理?
- node.js - 无法在 Nodejs 中连接本地 PostgreSQL 数据库
- java - 如何在 RecyclerView 中显示同一联系人的多个电话号码?
- apache-kafka - 使用 kafka 流尝试将消息从输入主题写入输出主题
- r - 我的 R 函数旨在将参与者随机分配到组并模拟手段差异,但并未通过管道运行
- ios - 有没有办法在不取回 Firestore 中的文档的情况下侦听集合中的更改
- javascript - 在自定义挂钩中将类型分配给事件处理程序
- node.js - Windows 中的路径系统
- ruby-on-rails - 汇总用户 Ruby on Rails 6 选定月份、年份的每周记录