python条件和循环
【摘要】 大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流作者简介:CSDN C/C++领域新星创作者https://blog.csdn.net/chuxinchangcun?type=blog掘金LV3用户 https://juejin.cn/us...
大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN C/C++领域新星创作者https://blog.csdn.net/chuxinchangcun?type=blog
- 掘金LV3用户 https://juejin.cn/user/1381426159953960
- 阿里云社区专家博主,星级博主,技术博主 https://developer.aliyun.com/profile/expert/5lkdbuggiiuhc
- 华为云云享专家 https://bbs.huaweicloud.com/community/myhomepage
关于除法运算的坑:
相除的得到的是浮点数,
x = 3
count = x/3
print(count) #1.0
print(type(count)) #<class 'float'>
如果想要得到整数,需要类型转化!
count = (int)(x/3)
#或者:
count = x/3
count = (int)(count)
条件和循环
缩进和悬挂的else
首先看一段C语言的代码(Java等其他语言也存在类似的问题).
if (x > 0)
if (y > 0)
printf("x and y > 0\n");
else
printf("x <= 0\n");
我们期望 else 对应的代码, 执行 x <= 0 的逻辑.
在C语言中, 如果不使用{ }来标明代码块, else会和最近的if匹配. 就意味着上面的else, 执行的逻辑其实是 y <= 0 .
在Python中, 就需要使用不同级别的缩进, 来标明, 这个else和哪个if是配对的.
# 和 if x > 0 配对
if x > 0:
if y > 0:
print('x and y > 0')
else:
print('x <= 0')
# else和if y > 0 配对
if x > 0:
if y > 0:
print('x and y > 0')
else:
print('x > 0 and y <= 0')
条件表达式
- Python中并没有 ? : 这样的三目运算符, 理由是Python设计者觉得这个玩意太丑 T_T
- 取而代之的是, 一种叫做条件表达式的东西. PS: 私以为, 这玩意更丑~ 但是预防同学们笔试面试被问到, 还是稍微提一下.
x, y, smaller = 3, 4, 0
if x < y:
smaller = x
else:
smaller = y
上面这一段代码, 用条件表达式写作
smaller = x if x < y else y #如果x<y,值就是x,否则就是y
和循环搭配的else
- else不光可以和if搭配, 还能和while, for搭配
例子:
# 实现一个函数, 从列表中查找指定元素, 返回下标.
def Find(input_list, x):
#在input_list中查找x,遍历input_list
for i in range(0, len(input_list)):
if input_list[i] == x:
return i
else: #else和for配合
return None
实现一个函数, 打印出一个数的最大因子
bug代码:
# 实现一个函数, 打印出一个数的最大因子
def ShowMaxFactor(x):
count = x / 2
#试除法
while count > 1:
if x % count == 0:
print('largest factor of %d is %d' % (x, count))
break
count -= 1
else:
print(f"{x} is prime") #素数
for i in range(10, 20):
#打印10-19每个数对应的最大因子
ShowMaxFactor(i)
错误原因: 因为没有声明类型, 所以count = x / 2得到的是浮点数!!!
for i in range(0,5):
print(i/5)
#执行结果:
0.0
0.2
0.4
0.6
0.8
解决办法:把count的类型强转: || 计算结果强转为int
#方法1:
count = (int)(x / 2) #强转类型
#方法2:
count = x / 2
count = (int)(count) #强转类型
# 实现一个函数, 打印出一个数的最大因子
def ShowMaxFactor(x):
count = (int)(x / 2) #强转类型
#试除法
while count > 1:
if x % count == 0:
print('largest factor of %d is %d' % (x, count))
break
count -= 1
else:
print(f"{x} is prime") #素数
for i in range(10, 20):
#打印10-19每个数对应的最大因子
ShowMaxFactor(i)
- 注意, 和循环搭配的else子句, 只会在循环条件不满足的时候才会执行(对于for来说就是整个序列遍历完成). 如果循环中途break了, 仍然会跳过else
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)