Python报错'must be str not int':循环读取输入拼接字符串问题求助
解决你的循环输入拼接问题&类型错误分析
咱们先拆解下你遇到的问题:首先那个must be str not int错误,根源是你代码里的reply=reply+1——你把字符串类型的reply和整数1直接相加了,Python可不会自动帮你把整数转成字符串,自然就报错啦。而且你的代码逻辑也完全偏离了需求,比如嵌套的while len(reply) >3循环完全没必要,也没做收集输入单词的操作。
下面是符合你需求的正确实现,我一步步给你讲:
正确代码实现
# 初始化一个空列表,用来存储用户输入的有效单词 words = [] while True: reply = input('Enter text, [type "stop" to quit]: ') # 判断终止条件:输入是'stop' 或者输入的是空格(或空内容) if reply.lower() == 'stop' or reply.strip() == '': break # 将有效单词添加到列表中 words.append(reply) # 用空格拼接所有单词并打印 print(' '.join(words))
代码解释
- 首先用
words = []创建空列表,用来存用户输入的每一个有效单词,这是实现拼接的关键——得先把所有单词收集起来才行。 while True启动无限循环,直到遇到终止条件才跳出。reply.lower() == 'stop'是为了兼容大小写输入,比如用户输入'STOP'也能正常终止;reply.strip() == ''用来判断用户输入的是空格(或者全是空白字符),满足任一条件就break终止循环。- 把符合要求的单词用
append()添加到列表里,最后用' '.join(words)把列表里的所有元素用空格拼接成一个字符串,这比逐个拼接字符串效率更高哦。
测试一下你给的示例输入:依次输入"how"、"long"、"has"、"it"、"been",最后输入'stop'或空格,就能得到期望输出how long has it been啦。
内容的提问来源于stack exchange,提问作者YeiBi
相关产品推荐
相关产品推荐

