我对编程比较陌生,所以我最近开始在python中尝试使用“def”。这是我的代码,它不断告诉我第一个名字还没有定义。
def name(first, last):
first = str(first)
last = str(last)
first = first.upper
last = last,upper
print("HELLO", first, last)
然后我运行程序,我写了一个像
这样的名字姓名(鲍勃,罗伯特) 然后它会告诉我“bob”尚未定义
答案 0 :(得分:4)
如果你的意思是字符串文字,你应该引用它们(使用'
或"
):
name('bob', 'robert')
除此之外,代码需要修复。
def name(first, last):
first = str(first)
last = str(last)
first = first.upper() # Append `()` to call `upper` method.
last = last.upper() # Replaced `,` with `.`.
print("HELLO", first, last)
答案 1 :(得分:1)
变量和字符串之间存在差异。变量是已经分配了数据的内存中的一个插槽(字符串,数字,结构......)当您编写没有引号的robert
时,Python将搜索已使用此名称实例化的变量。
此处不存在,因为您不写robert = 'something'
。如果你想直接传递一个字符串,你只需要编写它,用引号括起来(如果它在多行上,则为三引号)。
您希望实现的是name
这样的功能:
def name(first, last):
first = str(first)
last = str(last)
first = first.upper
last = last,upper
print("HELLO %s %s" % (first, last))
name('bob', 'robert') # Will print "HELLO bob robert"
答案 2 :(得分:1)
def name(first, last):
first = str(first)
last = str(last)
first = first.upper()
last = last.upper()
print("HELLO", first, last)
name("bob","robert")
1.str-objects有上层方法,但要调用它并得到结果你必须在方法名后加上“()” - 因为你得到了对象方法的链接 - 而不是大写的字符串。 .. 2.in调用名称(bob,robert) - 你把参数,这是未定义的变量.. 要做到这一点,你必须在调用之前定义这些变量,f.g:
bob = "bob"
robert="robert"
name(bob,robert)
答案 3 :(得分:0)
你需要把字符串放到引号(“bob”或“bob”)。
所以你的电话会是
name('bob', 'robert')
而不是
name(bob, robert)
如果你在没有引号的情况下使用它,python会尝试查找名为bob的变量。
此外,您不需要使用str(first)
或str(last)
,因为两者都是字符串。