笨方法学python 33课
今天Eiffel看到了第33章,任务是把一个while循环改成一个函数。
我在把while循环改成函数上很顺利,但是不知道怎么写python的主函数,在参数的调用上也出现了问题。
通过查资料,发现python的main函数可以用如下的方式来表示:
if __name__ == '__main__'
然后自然而然的想把main函数里声明的参数i,numbers,m传入loop()中。
最开始的想法:
def loop(i,numbers,m):
while(i<m):
print "at the top is %d" %i
numbers.append(i) i = i+1
print "Numbers now: ", numbers
print "At the bottom i is %d" % i print "The numbers:" for num in numbers:
print num if __name__ == '__main__':
i = 0
numbers = []
m = rawinput("input:")
loop(i,numbers,m) print "thank you"
成功运行,但是运行结果是一个远大于输入的的数组,下图书raw_input为3的结果:

讲raw_input改为input之后,可以正常输出结果:

心得总结:
1、main函数在python中的表示(如上述)。
2、python中的参数传递方法,目前看来,与c++差别不大。
3、input与raw_input:区别在于raw_input将所有输入的东西一视同仁(视为字符串),而input则会自动区分输入的类型。如上文输入3的时候,raw_input应该是将3看成了字符串,那么字符串的值可能就是运行结果中的6907+1=6908了。
4、global参数:在编写的过程中,一直很疑惑一点:就是main函数中的i变量应该是默认为全局变量的,我并没有在loop函数里边声明i变量为global,为什么loop里边的i值持续改变,却没有报错“referenced before assignment”呢?后来想到,是因为我是用参数传递的方法传递的i变量,所以函数内外的i值始终是一致的。换言之,如果loop()没有引用参数i,那么其内部的i则必须定义为global i。
5、其实python中main函数并不是必要的。
笨方法学python 33课的更多相关文章
- "笨方法学python"
<笨方法学python>.感觉里面的方法还可以.新手可以看看... 本书可以:教会你编程新手三种最重要的技能:读和写.注重细节.发现不同.
- 笨方法学python 22,前期知识点总结
对笨方法学python,前22讲自己的模糊的单词.函数进行梳理总结如下: 单词.函数 含义 print() 打印内容到屏幕 IDLE 是一个纯Python下自带的简洁的集成开发环境 variable ...
- 《笨方法学Python》加分题33
while-leep 和我们接触过的 for-loop 类似,它们都会判断一个布尔表达式的真伪.也和 for 循环一样我们需要注意缩进,后续的练习会偏重这方面的练习.不同点在于 while 循环在执行 ...
- LPTHW 笨办法学python 33章
32-33章节 将for-loop和while-loop循环的. 俩种句法就不说了.简单说下个人对于for和while的理解. 我觉得他learn python the hard way这里的写法是, ...
- LPTHW 笨方法学python 19章
本章节,我只是把所有的输出加上了自己的注释. #!/usr/bin/env python # -*- coding:utf-8 -*- def cheese_and_crakers(cheese_co ...
- 《笨方法学Python》加分题32
注意一下 range 的用法.查一下 range 函数并理解它在第 22 行(我的答案),你可以直接将 elements 赋值为 range(0, 6) ,而无需使用 for 循环?在 python ...
- 《笨方法学Python》加分题28
#!usr/bin/python # -*-coding:utf-8-*- True and True print ("True") False and True print (& ...
- 《笨方法学Python》加分题20
加分练习通读脚本,在每一行之前加注解,以理解脚本里发生的事情.每次 print_a_line 运行时,你都传递了一个叫 current_line 的变量,在每次调用时,打印出 current_line ...
- 《笨方法学Python》加分题17
题目通过前学习的文件操作把一个文件中的内容拷贝到另一个文件中,并使用 os.path.exists 在拷贝前判断被拷贝的文件是否已经存在,之后由用户判断是否继续完成拷贝. 新知识os.path.exi ...
随机推荐
- UpdatePanel的用法
UpdatePanel控件也是Ajax里用得最多的控件之中的一个,UpdatePanel控件是用来局部更新网页上的内容,网页上要局部更新的内容必须放在UpdatePanel控件里,他必须和上一次说的S ...
- SAP交货单过账自动生产采购订单、采购订单自动收货入库
公司间需要买卖操作,由于发货和收货都是同一批人在操作,为了减少业务人员的工作量,提高工作效率,特实现以上功能 1.增强实现:增强点为交货单过账成功时触发,在提交前触发,如果遇到不可预知问题,可能造成数 ...
- 文件和目录之link、unlink、remove和rename函数
任何一个文件可以有多个目录项指向其i节点.创建一个指向现有文件的链接的方法是使用link函数. #include <unistd.h> int link( const char *exis ...
- C#_数据库基本交互
//app.config <?xml version="1.0" encoding="utf-8" ?> <configuration> ...
- 全新的手势,侧滑返回、全局右滑返回都OUT啦!
前言 Android快速开发框架-ZBLibrary 最近将以前的 全局右滑返回 手势功能改成了 底部左右滑动手势. 为什么呢?为了解决滑动返回手势的问题. 目前有3种滑动返回手势 一.侧滑返回 代表 ...
- Linux进程IPC
IPC mechanisms supported by Linux include pipes, named pipes, semaphores, message queues, shared mem ...
- nfs文件系统挂载失败解决方法
nfs文件系统挂载失败解决方法 */--> nfs文件系统挂载失败解决方法 Table of Contents 1. 错误提示 2. 我的配置 1 错误提示 bootserver=255.255 ...
- 简单理解前端web开发的MVC模式
随着前端Ajax兴起.前端开发工作进一步划分:js开发和ui页面制作.另外从整个前端项目的清晰明朗以可扩展性角度来看,MVC的应用也越来越必要,特别是对大的项目. 例如 需要给一个页面上的button ...
- 春&风
流光飞舞中,消逝的背影连同流动的人群,早已荒凉. 谁是谁的谁?落入尘世间,只是光阴下面的一粒尘埃. 那些时光,那些爱,渐行渐远. 留在心底,淡淡的思念,如轻风一阵, 吹过 彼此的容颜.
- job interview
一 , 7series clock 二, SDRAM comtroller (DDR) 4.熟悉DDR2/3协议或Ethernet相关协议,并有实际项目经验者优先: 三,AXI bus(AMBA) 四 ...