字符串语法问题中的Python变量?

时间:2014-04-02 16:17:25

标签: python string variables python-3.x syntax-error

我正在为一个确定角色属性的程序制作代码,我希望我的程序在样式中为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))

我不确定如果有人可以帮我解决这个问题会有什么不对,谢谢!

2 个答案:

答案 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而编号)