CS61A

CS61A

1.hw01

https://cs61a.org/hw/hw01/

from operator import add, sub def a_plus_abs_b(a, b): """Return a+abs(b), but without calling abs. >>> a_plus_abs_b(2, 3) 5 >>> a_plus_abs_b(2, -3) 5 >>> a_plus_abs_b(-1, 4) 3 >>> a_plus_abs_b(-1, -4) 3 """ if b < 0: f = lambda a,b : a-b else: f = lambda a,b : a+b return f(a, b) def a_plus_abs_b_syntax_check(): """Check that you didn't change the return statement of a_plus_abs_b. >>> # You aren't expected to understand the code of this test. >>> import inspect, re >>> re.findall(r'^\s*(return .*)', inspect.getsource(a_plus_abs_b), re.M) ['return f(a, b)'] """ # You don't need to edit this function. It's just here to check your work. def two_of_three(i, j, k): """Return m*m + n*n, where m and n are the two smallest members of the positive numbers i, j, and k. >>> two_of_three(1, 2, 3) 5 >>> two_of_three(5, 3, 1) 10 >>> two_of_three(10, 2, 8) 68 >>> two_of_three(5, 5, 5) 50 """ return min(i, j, k)**2 + (i + j + k - max(i, j, k) - min(i, j, k))**2 def two_of_three_syntax_check(): """Check that your two_of_three code consists of nothing but a return statement. >>> # You aren't expected to understand the code of this test. >>> import inspect, ast >>> [type(x).__name__ for x in ast.parse(inspect.getsource(two_of_three)).body[0].body] ['Expr', 'Return'] """ # You don't need to edit this function. It's just here to check your work. def largest_factor(n): """Return the largest factor of n that is smaller than n. >>> largest_factor(15) # factors are 1, 3, 5 5 >>> largest_factor(80) # factors are 1, 2, 4, 5, 8, 10, 16, 20, 40 40 >>> largest_factor(13) # factor is 1 since 13 is prime 1 """ "*** YOUR CODE HERE ***" for i in range(n-1,0,-1): if n % i == 0: return i def hailstone(n): """Print the hailstone sequence starting at n and return its length. >>> a = hailstone(10) 10 5 16 8 4 2 1 >>> a 7 >>> b = hailstone(1) 1 >>> b 1 """ "*** YOUR CODE HERE ***" len = 1 while n != 1: print(n) if n % 2 == 0: n = n // 2 else: n = n * 3 + 1 len = len + 1 print(n) return len


2.lab01

def digit(n, k): """Return the digit that is k from the right of n for positive integers n and k. >>> digit(3579, 2) 5 >>> digit(3579, 0) 9 >>> digit(3579, 10) 0 """ d = 10 ** k sum = (n // d) % 10 return sum def middle(a, b, c): """Return the number among a, b, and c that is not the smallest or largest. Assume a, b, and c are all different numbers. >>> middle(3, 5, 4) 4 >>> middle(30, 5, 4) 5 >>> middle(3, 5, 40) 5 >>> middle(3, 5, 40) 5 >>> middle(30, 5, 40) 30 """ maxx = max(a,b,c) minn = min(a,b,c) second_cnt = a + b + c - maxx - minn return second_cnt def falling(n, k): """Compute the falling factorial of n to depth k. >>> falling(6, 3) # 6 * 5 * 4 120 >>> falling(4, 3) # 4 * 3 * 2 24 >>> falling(4, 1) # 4 4 >>> falling(4, 0) 1 """ "*** YOUR CODE HERE ***" num = 1 for i in range(n,n-k,-1): num = i * num return num def divisible_by_k(n, k): """ >>> a = divisible_by_k(10, 2) # 2, 4, 6, 8, and 10 are divisible by 2 2 4 6 8 10 >>> a 5 >>> b = divisible_by_k(3, 1) # 1, 2, and 3 are divisible by 1 1 2 3 >>> b 3 >>> c = divisible_by_k(6, 7) # There are no integers up to 6 divisible by 7 >>> c 0 """ "*** YOUR CODE HERE ***" cnt = 0 for i in range(1,n+1): if i % k == 0: print(i) cnt += 1 return cnt def sum_digits(y): """Sum all the digits of y. >>> sum_digits(10) # 1 + 0 = 1 1 >>> sum_digits(4224) # 4 + 2 + 2 + 4 = 12 12 >>> sum_digits(1234567890) 45 >>> a = sum_digits(123) # make sure that you are using return rather than print >>> a 6 """ "*** YOUR CODE HERE ***" while y > 0: d = y % 10 sum += d y //= y return sum def double_eights(n): """Return true if n has two eights in a row. >>> double_eights(8) False >>> double_eights(88) True >>> double_eights(2882) True >>> double_eights(880088) True >>> double_eights(12345) False >>> double_eights(80808080) False """ "*** YOUR CODE HERE ***" pre = None while n > 0: cur = n % 10 if cnr == 8 and pre == 8: return True pre = cur n //= 10 return False

__EOF__

本文作者Alaso_shuang
本文链接https://www.cnblogs.com/Alaso687/p/18664291.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Alaso_shuang  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2023-01-10 THUCTF开放日
2023-01-10 cmd查找文件路径
2 3
4
点击右上角即可分享
微信分享提示