我正在为一个确定角色属性的程序制作代码,我希望我的程序在样式中为print
,或者' char1的强度值为str1,技能值为skl1&#39 ;我在Python 3.3.2中寻找了一种方法来实现这一点并且发现了这一点,但是在运行它的过程中我一直遇到错误;
Traceback (most recent call last):
File "E:\CA2 solution.py", line 6, in <module>
print('% has a strength value of % and a skill value of %'(char1,strh1,skl1))
TypeError: 'str' object is not callable
我不知道这是什么,它阻碍了我的进步,这就是代码;
import random
char1=str(input('Please enter a name for character 1: '))
strh1=((random.randrange(1,4))//(random.randrange(1,12))+10)
skl1=((random.randrange(1,4))//(random.randrange(1,12))+10)
print('% has a strength value of % and a skill value of %'(char1,strh1,skl1))
我不确定如果有人可以帮我解决这个问题会有什么不对,谢谢!
答案 0 :(得分:3)
你的语法混乱了;要使用字符串作为模板,您需要在字符串和元组之间使用%
运算符 ;占位符使用%s
将值插入为字符串:
print('%s has a strength value of %s and a skill value of %s' % (char1, strh1, skl1))
如果没有%
,那么Python会将其视为对字符串对象的'...'()
函数调用。
我建议您使用较新的str.format()
method来应用字符串格式;它更具可读性,使用方法调用而不是操作符,并且更灵活:
print('{} has a strength value of {} and a skill value of {}'.format(char1, strh1, skl1))
特别是当你只有一个值来实现时,这更容易使用,因为你不会陷入许多开始Python的(oneitem)
- is-not-a-tuple坑用户属于。
答案 1 :(得分:1)
print('%s has a strength value of %s and a skill value of %s'%(char1,strh1,skl1))
或
print("{0} has a str of {1} and skill of {2}".format(char1,strh1,skl1))
(尽管花括号里面的数字在python2.7中是可选的+我为了兼容python&lt; = 2.6而编号)