Python报TypeError: bad operand type for unary +: 'str'如何解决
报错原因
报错TypeError: bad operand type for unary +: 'str'的触发点是print语句的语法错误:你在逗号后多写了一个+,Python会把这个和前面值用逗号隔开的+识别为一元正号运算符(类似数字前的正负标记),但一元正号仅支持数字类型操作,你后面跟的是random.choice()返回的字符串类型,直接触发类型错误。
另外代码还存在两个隐含问题:
- 没有导入
random模块,修好上述语法错误后运行也会触发NameError - 当前写法
random.choice(harfler) * kackarakter是把同一个随机选中的字母重复N次,如果需求是生成N位随机字母串(多个随机字母组合),现有逻辑不符合预期。
修复步骤
- 代码开头先导入random模块
- 删掉print参数里多余的逗号,让
+作为字符串拼接运算符使用,而非独立的一元运算符 - 如果需要生成多字符随机串,替换单字符重复的写法为随机多选后拼接的逻辑
修复后代码
如果需求是输出固定前缀+单个随机字母重复N次:
import random harfler = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","y","z","q","w","x"] kackarakter = int(input("How Many Letters Do You Want ?:")) print('("My WordPress Blog")' + random.choice(harfler) * kackarakter)
如果需求是输出固定前缀+N位随机抽取的字母串:
import random harfler = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","y","z","q","w","x"] kackarakter = int(input("How Many Letters Do You Want ?:")) random_str = ''.join(random.choices(harfler, k=kackarakter)) print('("My WordPress Blog")' + random_str)
关键注意点
- print函数里用逗号分隔的内容会被识别为多个独立传参,参数之间默认用空格拼接输出,不要在逗号后随意写运算符,否则运算符会单独作用在单个参数上触发意料之外的错误
- 字符串的
*运算规则是"a"*3得到"aaa",是重复单字符串的效果,要生成多随机字符组合需要用random.choices批量选取后拼接。
内容的提问来源于stack exchange,提问作者MuhammedTr768
相关产品推荐
相关产品推荐

