【发布时间】:2013-09-27 10:19:00
【问题描述】:
好的,所以我正在做家庭作业,我被要求做以下事情:
创建一个叫做student data的函数,它接受四个参数,一个名字(一个字符串),一个年龄(一个整数),一个学号(一个字符串)以及他们是否在CSCA08注册(一个布尔值),并返回一个字符串包含以下格式的信息:[学号、姓名、年龄、已注册]。
您的代码应该如下工作:
>>> student_data("Brian",32,"1234567",False)
`[1234567,Brian,32,False]'
>>> student_data("Nick",97,"0000001",True)
`[0000001,Nick,97,True]'
我的想法是这样的:
def student_data(name, age, student_number):
return '[' + student_number + ',' + name + ',' + str(age) + ']'
当输入到 Python 中时:
student_data("Jeremy", 19, "999923329")
'[999923329,Jeremy,19]'
(请注意,关于布尔值的最后一点我省略了 - 我将在稍后讨论。)
据我了解,“Jeremy”和“999923329”是随后作为第二行字符串的一部分返回的字符串。对于“年龄”,因为当我调用函数 student_data 时没有引号,它被 Python 解释为 int。然后,我将该 int 值转换为字符串,因此我可以得到 '[999923329,Jeremy,19]'。
所以从技术上讲,我想我要问的是:参数'age'是否被python视为int,直到返回函数将其更改为str类型?请注意,赋值需要四个参数,两个字符串(我有),一个 int(我不知道它是否实际上被解释为 int)和一个布尔值,这会导致以下结果:
我真的不知道布尔值是如何工作的。具体来说,在作业的背景下,我到底应该做什么?一个例子是什么?我摆弄了一下我的代码,我想出了这个:
def student_data(name, age, student_number, boolean):
return '[' + student_number + ',' + name + ',' + str(age) + "," + str(boolean) + ']'
并在 Python 中输入:
student_data("Jeremy", 19, "999923329", True)
'[999923329,Jeremy,19,True]'
这实际上完全符合任务要我做的事情,但我不喜欢它,因为我真的不明白发生了什么。就像,'boolean' 是函数 student_data 需要工作的参数。但究竟什么是参数?它和变量一样吗?当我在 python shell 中输入“True”时,到底发生了什么?
发生的事情是否与为变量赋值时发生的事情相同?在这种情况下,当我为变量赋值时会发生什么?作业要求参数为布尔值,但我不相信我在代码中输入了布尔值,是吗?
是的,如果不是很明显,我以前从未上过计算机科学课。
【问题讨论】:
-
一个推荐:
def student_data(name, age, student_number): return '[{}, {}, {}]'.format(name, age, student_number)。使用str.format比使用+连接字符串更好。 -
Python 不会将数据“视为”某种类型 - 更改类型意味着使用另一个对象构造一个新对象。所以 Python 知道,要从整数生成字符串,需要以正确的顺序正确的数字。这不仅仅是将其标记为字符串的过程。
str()使用给定值作为基础创建一个新值。您似乎对一门语言的基础知识了解不足 - 您可能应该阅读更多教程。 -
@user2387370,您可能指的是非常相似的问题:stackoverflow.com/questions/18857723/… stackoverflow.com/questions/18854561/… 然而,这个问题有一些更具体的问题,所以我不会称它为重复。
-
参考这篇文章。对你有用codewithlogic.wordpress.com/2013/09/01/…
标签: python string function parameters boolean