笨方法学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函数并不是必要的。

时间: 2024-08-05 07:09:01

笨方法学python 33课的相关文章

Day 2 笨方法学Python

手打第25个练习,出错的地方有: def 定义后indent 4个空格,第一行空了以后,直接换行是跟上面对其的,但是运行时是错误的,我的解决方法是,重新手动空格4个: 还发现一个问题就是,中文解释,以前老是出错 # -*- coding : utf-8 -*- 网上看到的加上这个就可以了,但是我的还是出错.今天偶然在削微寒的博客http://www.cnblogs.com/xueweihan/的GIthub上找到了答案 #coding:utf-8 换成这个语句就可以了.以后,尽量每句都加上注释,

笨方法学python(5)加分题

这篇对应的是习题17,更多文件操作 # -*- coding: utf-8 -*- #对文件更多操作复制A文件的内容到B文件 #from sys import argv from os.path import exists prompt = "> " from_file = raw_input("please input the filename where you want to copy from: >") #in_file = open(from_

笨方法学python(6)加分题--列表与字典的区别

he string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility) P A H N A P L S I I G Y I R And then read line by line: "PAHNAPLSIIG

笨方法学python(4)加分题

自己在看笨方法学python这本书,把自己觉得有学到东西的记下来,并不是每个习题都有记录 这次对应的是:习题 6: 字符串(string)和文本 这次只要是想说明一下,在print语句中,只要带有格式化字符的,会当作格式化来处理 脚本1: 结果1: 打出的结果没有%r,那是因为当作格式化处理了 脚本2: 结果2: 会报错,因为print joke_evaluation %hilarious 是格式化的标识 脚本3: 结果3:

笨方法学Python(3)

习题 20: 函数和文件 seek()的用法: >>> f.readlines()#读取出文件的所有内容 ['abcdefghijk\n'] >>> f.seek(2) #将当前的位置设定为相对当前位置的2的位置. >>> f.read(4) #读取4个位置的数据(从设定的位置开始读取,也就是ab 后面的四个字符) 'cdef' >>> f.seek(2,1)#将当前的位置(2)设定为相对当前位置的2的位置. >>>

笨方法学Python,Lesson 32 - Lesson 34

Exercise 32 代码 the_count = [1, 2, 3, 4, 5] fruits = ['apples', 'oranges', 'pears', 'apricots'] change = [1, 'pennies', 2, 'dimes', 3, 'quarters'] # this first kind of for-loop goes through a list for number in the_count:     print "This is count %d&q

《笨方法学Python》加分题28

1 #!usr/bin/python 2 # -*-coding:utf-8-*- 3 4 True and True 5 print ("True") 6 False and True 7 print ("False") 8 1 == 1 and 2 == 1 9 print ("False") 10 "test" == "test" 11 print ("True") 12 1 ==

LPTHW 笨方法学python 19章

本章节,我只是把所有的输出加上了自己的注释. #!/usr/bin/env python # -*- coding:utf-8 -*- def cheese_and_crakers(cheese_count, boxes_of_crackers): '''定义了cheese_and_crakers的函数 读出两个变量,并输出他们. ''' print "You have %d cheeses!" % cheese_count print "You have %d boxes

笨方法学Python(1)

习题 1: 第一个程序(略) Warning如果你来自另外一个国家,而且你看到关于 ASCII 编码的错误,那就在你的 python 脚本的最上面加入这一行:# -*- coding: utf-8 -*-这样你就在脚本中使用了 unicode UTF-8 编码,这些错误就不会出现了. 语法错误(SyntaxError) 习题2:注释和井号(略) 习题3:数字和数字计算 习题4:变量和命名 习题 5: 更多的变量和打印(格式化字符串) my_name = 'Zed A. Shaw'my_age =