撩课-Python-每天5道面试题-第4天
程序员文章站
2022-04-15 16:41:23
一. for循环和while循环中的else代表什么意思? 二. break, continue, pass, return和exit分别代表什么意思? 三. 写循环代码时, for 和 while该如何选择, 以及有什么注意事项? 四. 代码实现: 接收用户输入的两个数值a和b, 使用循环计算出a ......
一. for循环和while循环中的else代表什么意思?
当for循环和while循环顺利的遍历完成时, 就会执行else分支 如果循环过程中, 碰到continue, 只要没有打断循环, 就会继续执行else 例如: for i in range(1, 11): print(i) continue else: print("循环顺利执行完毕后", i) # 会打印 for i in range(1, 11): print(i) break else: print("循环顺利执行完毕后", i) # 不会打印 for i in range(1, 11): print(i) continue break else: print("循环顺利执行完毕后", i) # 猜会不会打印?
二. break, continue, pass, return和exit分别代表什么意思?
break和continue 一般应用在循环语句中 break 代表是: 打断循环, 跳出循环体, 不再往下一个循环执行 continue 代表是: 从当前位置结束本次循环, 继续下一次循环 pass 一般应用场景, 在于保持代码的结构完整; 表示告诉系统这里有东西, 但暂时不做处理; 例如: 在循环体中, 在类定义中, 在函数定义中 for i in range(1, 11): pass class sz: pass def test(): pass return一般应用于函数中用于返回函数内部数据, 碰到return, 就不再继续往下执行; def test(): print(1) return "itlike" print(2) # 此行代码不会被执行到 print(test()) # 打印 itlike exit是指程序级别的退出, 无论放在哪个位置, 只要碰到这玩意, 就整个程序执行完毕, 不再继续往后执行
三. 写循环代码时, for 和 while该如何选择, 以及有什么注意事项?
如果能够确定循环次数, 并且在内部需要用到索引, 或者循环数据, 则选择for循环; 比如: 求出1到100之和 如果不能确定循环次数, 仅仅是一些特定条件, 则选择使用while循环 比如: 让用户猜数字, 猜到对为止; 让用户输入密码, 输入到对为止 使用循环时, 注意避免死循环; 另外, 为了提升代码执行效率, 不要循环重复性的, 没意义的耗时操作 例如: 我们在循环体内部用到1-1000之间的数值之和; 这个数据就在外面计算好, 然后在内部使用, 不要在循环体内部计算; 你计算1000遍, 结果都一样, 除下费电, 耗性能, 你图不到啥玩意
四. 代码实现: 接收用户输入的两个数值a和b, 使用循环计算出a的b次方
a = int(input("please input num a: ")) b = int(input("please input num b: ")) # 自行考虑容错 result = 1 for i in range(1, b + 1): result *= a print(result)
五. 计算超长的两个整数192837465564738291 + 832465961738262之和(不要直接使用+法运算, 假装如果数值很长, 会产生溢出)
# 算法思路: # 以字符串的形式, 模拟两个数据的加法运算 # 重点在于: 考虑两个数据的长度, 以及进位处理 a = 192837465564738291 b = 832465961738262 # 1. 将两个数值, 转换成对应的字符串 a_str = str(a) b_str = str(b) # 2. 根据长度, 补全长度短的那个字符串, 在字符串前面, 用0补全 a_str_len = len(a_str) b_str_len = len(b_str) zero_len = a_str_len - b_str_len if zero_len > 0: b_str = "0" * zero_len + b_str elif zero_len < 0: a_str = "0" * (- zero_len) + a_str # 3. 循环字符串, 从个位(数值最右侧), 开始相加运算 # 并在计算同时, 更新进位, 累加到下次运算中 result_str = "" carry_num = 0 # 进位, 默认为0 for idx in range(len(a_str) - 1, -1, -1): tmp = int(a_str[idx]) + int(b_str[idx]) + carry_num result_str = str(tmp % 10) + result_str # 将单次计算结果拼接到结果字符串中 carry_num = tmp // 10 # 更新进位 print(result_str)