Python新手求助:如何将代码输出从元组形式改为字符串拼接结果?
Python字符串拼接问题:去掉括号和逗号,实现无分隔拼接
你当前代码执行后输出带括号和逗号,核心问题出在这行代码:
note = copy,note_2
在Python里,用逗号分隔两个变量会创建一个元组(tuple)——这是一种有序集合类型,输出时默认就会显示成(元素1, 元素2)的格式,完全不是你想要的字符串拼接效果。
另外代码里还有两处需要修正的细节:
a = (True)的括号完全多余,直接写a = True即可,括号不会改变布尔值的类型。note_2 = eval(input(note))存在严重安全风险:eval()会执行用户输入的任意代码,而且你的逻辑应该是获取用户要添加的文本,不是执行代码,这步完全没必要用eval。
修复后的完整代码
a = True note = input("enter notes here:") copy = note while a == True: edita = input("if you want to add or edit anything write, edit if you are done using notes say no (edit, or no).") if edita == "edit": # 直接获取用户要添加的内容,去掉危险的eval note_2 = input("输入要添加的内容:") # 用+号拼接字符串,得到无分隔的结果 note = copy + note_2 copy = note elif edita == "no": # 添加退出循环的逻辑,避免无限循环 a = False # 打印最终结果 print(note)
关键修改点说明
- 把
note = copy,note_2改成note = copy + note_2:+号是Python中字符串的拼接运算符,比如"abc" + "def"会直接得到"abcdef",完全符合你要的无分隔效果。 - 替换
eval(input(note))为普通的input:直接获取用户输入的文本,既安全又符合需求。 - 增加
elif edita == "no"分支:原来的代码没有终止循环的逻辑,用户输入"no"后会一直循环,加上a = False可以正常退出循环。
内容的提问来源于stack exchange,提问作者patrick scott
相关产品推荐
相关产品推荐

