集智专栏
资源加载中,请稍后...
集智专栏

[2018.02.12直播] Python之循环

录播回放地址:

负基础入门Python(2)


04. 控制流

如何判断一个数是不是质数?

  • 质数(prime): 除了1和本身,不能整除其他任何数的自然数。
程序说明
判断质数
示例代码
x = if x>1: for i in range(2, x): if x%i==0: print(x,"不是质数") print(i,"是一个质因子") break else: print(x,"是质数") else: print(x,"不是质数")
程序验证过程
True


05. 列表

程序说明
列表
示例代码
xs = [3, 1, 2] print("xs = ", xs) print("\nxs[2] = ", xs[2]) print("\nxs[-1] = ", xs[-1]) # Negative indices count from the end of the list; prints "2"


程序说明
列表方法
示例代码
# 列表可以含有不同类型的元素 xs[2] = 'foo' print("xs = ", xs) # 列表末尾添加元素 xs.append('bar') print("xs = ",xs) # 删除并返回列表的最后一个元素 x = xs.pop() print("x = ", x, "\nxs = ", xs)


程序说明
Enumerate
示例代码
hans = ["宋江", "卢俊义", "吴用", "公孙胜", "关胜", "林冲", "秦明"] # idx表示元素在列表中的索引 for idx, han in enumerate(hans): print('#{}:{}'.format(idx + 1, han))


Quiz 3: 春运

假设你是卖火车票的,每张25,元,市面上流通的纸币面额有三种:25, 50, 100

初识状态下,你一分钱都没有,来购票的人按顺序和所持面额组成一个列表,比如: [25, 25, 25, 25, 25, 25, 25, 50, 50, 50, 100, 100, 100, 100]

请定义函数tickets(),判断当前形势下,我们能否保持足够的找零,从而将票卖给每一个人?

程序说明
控制流+列表
示例代码
def tickets(people): bill_counts = [0,0,0] # 统计当前余额 flag = True # 循环每位购票者 for i in people: if i == 25: # 如果收到25元 bill_counts[0] += 1 elif i == 50: # 如果收到50元 if bill_counts[0] == 0: flag = False break else: bill_counts[0] -= 1 bill_counts[1] += 1 # >>>> 编程区 <<<< # >>>> 编程区 <<<< return flag
正确答案
def tickets(people): bill_counts = [0,0,0] # 统计当前余额 flag = True # 循环每位购票者 for i in people: ... else: # 如果收到100元 cond_1 = bill_counts[0] >= 3 cond_2 = bill_counts[0] >=1 and bill_counts[1] >=1 if cond_2: bill_counts[0] -= 1 bill_counts[1] -= 1 bill_counts[2] += 1 elif cond_1: bill_counts[0] -= 3 bill_counts[2] += 1 else: flag = False return flag
程序验证过程
test_cases = [[25, 25, 50], [25, 100], [25, 25, 25, 25, 25, 25, 25, 25, 25, 25], [50, 50, 50, 50, 50, 50, 50, 50, 50, 50], [25, 25, 25, 25, 50, 100, 50], [25, 25, 25, 25, 25, 25, 25, 50, 50, 50, 100, 100, 100, 100], [25, 50, 25, 100], [25, 25, 25, 25, 25, 100, 100]] test_labels = [True, False, True, False, True, False, True, False] def check_answer(): flag = True for i in range(len(test_cases)): if tickets(test_cases[i])!=test_labels[i]: print("\n测试样本: ", test_cases[i]) print("计算结果:", tickets(test_cases[i])) print("正确结果:", test_labels[i]) flag = False return flag check_answer()
提示信息
能否找零的关键不仅在于总额是否充足,还要分情况看各种面额。


06. 函数

程序说明
Function
示例代码
def sign(x): if x > 0: return 'positive' elif x < 0: return 'negative' else: return 'zero' for x in [-1, 0, 1]: print(sign(x))

您也许喜欢这些文章

零基础深度学习Part I:计算图

发表至系列教程
这是本系列教程的第一章。本章将带领你入门深度神经网络的数学和算法基础。然后我们将效仿 TensorFlow API,自己动手用 Python 实现一个神经网络库。 学习本章不需要任何机器学习或者神经网络的基础。但是,对于本科生级别的微积分、线性代数、基础算法和概率学,需要有一定的基础。

《机器学习有意思! 01》- 世界上最简单的机器学习入门

发表至趣味项目
本教程适合所有对机器学习感到好奇,却不知从何下手的读者。我想应该有很多人试着读了维基百科页面,然后愈发迷惘、沉沦,盼望着有人能够提供一个high-level的解释,那你找对地方了。

[Pandas] 表格整合三大神技之CONCATENATE

发表至数据科学
Pandas相比于传统的经济学计算工具(Stata、SAS、R、MATLAB等)的优点有很多: 1. 相比于R等统计软件,Pandas借鉴了R的数据结构,因此拥有了R的很多方便的数据操作特性;在语法设计上,Pandas相比于R和Stata更严谨并且更简洁易用;基于Python的自动管理内存的能力,以及在很多细节上的优化,Pandas拥有了更好的管理和计算大数据的能力。 2. Pandas的底层基于Numpy搭建,因此Pandas拥有了Numpy的全部优点。Numpy原生的C接口,也给扩展Pandas的计算性能带来了很大的方便。

文章评论(2)

安非他命 发表于 11天前 回复
(接前面,手滑) 输入1: "{} {}".format("hello", "world")——输出1:'hello world'——输入2: "{0} {1}".format("hello", "world") # 设置指定位置——输出2:'hello world'——输入3: "{1} {0} {1}".format("hello", "world") # 设置指定位置——输出3:'world hello world'
安非他命 发表于 11天前 回复
%字符串格式化实例: print "My name is %s !" % ('Zara') 输出结果: My name is Zara ! 课程里用到的格式化字符串方法 str.format(),通过 {} 和 : 来代替以前的 % : >>>"{} {}".format("hello", "world")