作者回复: for…in用于循环可迭代对象,如 列表,字典,元组
while用于满足某一条件后循环执行
作者回复: 补全是pycharm自带的功能,左侧括号之后会自动补全,不是快捷键
作者回复: 逐个位置比较,例如 (3,4) > (2,5) ,如果3>2成立就不继续比较了,返回true ;如果第一个位置相等则比较第二个位置的数字,如(2,6) > (2,5) ,第一个相等则比较第二个元素,返回true,可以在命令行执行python命令在交互模式进行相应测试
作者回复: 可以用后面学习的“异常”来解决
作者回复: 首先思路是对的,纠正两个地方的语法错误
(8, 12) 和 elis:
分别是使用了全角(中文)的括号 、 elis 应该为else
另外 zodiac_temp = () 是将zodiac_temp定义为了tuple类型,那么 zodiac_temp[i] 的用法在tuple里面就必然不支持了,所以会一直报TypeError 错误。
后面的视频中有使用for循环代替filter实现的代码,这里就不再重复答复了。
作者回复: 正确,因为有很多刚入门的同学,没有用太专业的术语
作者回复: 您好,可能由于之前演示代码的干扰,导致您运行的时候显示不正确。我把for嵌套if的代码单独贴一下,您可以对照一下自己编写的代码进行调试:
zodiac_name = (u'摩羯座', u'水瓶座', u'双鱼座', u'白羊座', u'金牛座', u'双子座',
u'巨蟹座', u'狮子座', u'处女座', u'天秤座', u'天蝎座', u'射手座')
zodiac_days = ((1, 20), (2, 19), (3, 21), (4, 21), (5, 21), (6, 22),
(7, 23), (8, 23), (9, 23), (10, 23), (11, 23), (12, 23))
# 用户输入月份和日期
int_month = int(input('请输入月份:'))
int_day = int(input('请输入日期:'))
for zd_num in range(len(zodiac_days)):
if zodiac_days[zd_num] >= (int_month, int_day):
print(zodiac_name[zd_num])
break
elif int_month == 12 and int_day >23:
print(zodiac_name[0])
break
作者回复: 问题出在“elif month == 12 and day > 23:”这条语句,当你输入 12月1日 ~12月20日时,既不满足 上面的if语句,也不满足elif语句,就运行到了else语句这里了。建议尝试修改 if zodiac_days[zd_num] >= (month, day): 将12月1日 ~12月20日的输入包括到这条判断语句里。
作者回复: 是的,要用and 和 or 这种方式
作者回复: 关于星座日期方面我的数据也不专业,主要想借用这个例子给大家讲解for if的使用,而星座生肖刚好是大家所熟知的需要循环和判断的例子,如果日期有出入还请大家谅解。
作者回复: 注意看倒数第二行的错误提示,这个错误是由于>=两端的类型不同,所以不被支持。试试能否将>=两端调整为同一类型呢?
作者回复: 问题在于没有正确理解 for...in...结构的循环过程,在上面代码中 num 在每次循环,会为num进行赋值,我们把代码改的再精简一些:
num = 0
for num in [10,20,30]:
num += 2
print(num)
输出结果是12,22,32。num在for循环中第一次取得10,在第一遍循环之后输出12,注意,这时候num会在第二遍循环的开始,取得列表的第二个元素20,覆盖了已有的12,因此输出是22,正确理解这个过程,那么输出1-100之间的偶数就应该能够解决了
作者回复: 要看好print()是在if else结构里面还是外面,可以自己敲一遍代码加强理解。
作者回复: 不同的IDE有不同的快捷键,如PyCharm可以用鼠标选中要注释的多行,使用ctrl+/快捷键进行注释。再次使用ctrl+/可以取消注释
作者回复: 请检查一下for语句前面是否有空格
括号、引号、逗号是否中文全角,都会引发语法错误
作者回复: zodiac_day在这里不是元组结构,它是filter函数返回的对象,这个对象有一个特征叫做可迭代性,可迭代的filter对象有个特征是里面的内容只能读取一次,在这段代码中,通过list读取了zodiac_day的内容之后,再次读取里面的内容就是空的了,因此两次结果不一样
作者回复: zodiac_days是一个元组,元组是序列的一种,因此元组可以使用序列的索引、切片、加、乘等功能。这里使用的中括号就是取元组某一个元素的索引功能。中括号里的整数对应着元组的下标