各位大佬Python课后题求助,看代码!
本帖最后由 Feather233 于 2018-11-20 16:44 编辑i = 10
while i:
print("233")
i = i-1
这个为啥是输出十次,而 我改为i+1就是无限循环了 i-5只有2次了
求解!!! 输出10 次是因为 while i 这个i只要不为0(也就是不为假) while这个循环里的print就一直输出
改为i+1后 i就一直为真 肯定就是无限循环了, 借帖子问一个问题015讲中的flag con和flag len分别是什么意思
while i的 意思就相当于 while i 不等于0 ,i从你赋值10开始,不停的自减1(i =i-1),减到零的情况下,whie 就等于 0 ,0的话也就是False,当然就跳出咯~
i+1的情况下,i往上增长,永远不为零,所以无限循环了。
i-5类似,第一次能输出是因为10-5 =5 ,第二次输出是因为5-5 =0 ,没有第三次是因为while i =0了,所以跳出了! 爱鱼ning 发表于 2018-11-20 18:08
借帖子问一个问题015讲中的flag con和flag len分别是什么意思
flag con和 flag len 两个变量本身没什么含义。
但是作者这里用这两个变量的意思,一个是用来统计字符串长度,一个是用来计算是否包含特征库用的。
字符串长度符合了,就len +1 ;字符串符合特征库了,就 con +1 。就这个意思。
其实你可以随便取名。 while是否进入循环的条件是while后的值为ture(非0),i初始值为10,进入循环后,i的值-1,变为9;第二次进入循环...依次下去一直到i的值变为0后,不进循环了,期间一共执行了10次循环内的输出语句,所以输出十次。改为i+1,i的值始终为ture(非0),所以是个无限循环。改为i-5,第一次循环输出后,i的值变为5,进入第二次循环,输出后i的值变为0,while后的条件变为0,不再进入循环,因此只输出两次。 heidern0612 发表于 2018-11-20 18:17
while i的 意思就相当于 while i 不等于0 ,i从你赋值10开始,不停的自减1(i =i-1),减到零的情况下,whie ...
谢谢大佬 我后面自己想同了不过解释的很到位! Long-Ju 发表于 2018-11-20 16:51
输出10 次是因为 while i 这个i只要不为0(也就是不为假) while这个循环里的print就一直输出
改为i+1后 i ...
谢谢{:5_108:} Dipson淡水 发表于 2018-11-20 20:55
while是否进入循环的条件是while后的值为ture(非0),i初始值为10,进入循环后,i的值-1,变为9;第二次进入 ...
谢谢{:5_108:} heidern0612 发表于 2018-11-20 18:17
while i的 意思就相当于 while i 不等于0 ,i从你赋值10开始,不停的自减1(i =i-1),减到零的情况下,whie ...
大佬 你好 我有个问题麻烦一下 关于第六节课的课后题,对于判断闰年的代码
问题是我写出来的这个如果用户输入 0那这个代码就结束了 怎么才能做到完全的循环起来,代码如下:
temp = input("plese enter a year:")
year = int(temp)
while year != 0:
temp = input("is not leap year,try again!")
while not temp.isdigit():
temp = input("sorry,your input is incorrect,please enter an integer")
year = int(temp)
if year/400 == int(year/400):
print(temp + "is a leap year!")
else:
if(year/4 == int(year/4))and(year/100 != int(year/100)):
print(temp + "is a leap year!")
else:
print(temp + "is not leap year!")
本帖最后由 heidern0612 于 2018-11-21 17:36 编辑
Feather233 发表于 2018-11-21 16:31
大佬 你好 我有个问题麻烦一下 关于第六节课的课后题,对于判断闰年的代码
问题是我写出来的这个如果 ...
我也不是大佬,我也是新人,刚学没多久。我可以给你个思路:
1、如果你想一直循环不退出的话,就直接while True就可以了,把所有的判断条件和用户交互步骤都包含在内。
2、如果你厌倦了无限循环,直接把while条件换了,换成用户输入特定字符退出,如用户输入Q退出,用户不输入的话就不退出就可以咯。
我给你举个例子:
while True:
temp = input('请输入一个年份:')
if temp == "Q":
print("程序退出,谢谢使用。")
break
else:
if not temp.isdigit():
print("抱歉,您的输入有误,请输入一个整数:")
else:
year = int(temp)
if year/400 == int(year/400):
print(temp + ' 是闰年!')
else:
if (year/4 == int(year/4)) and (year/100 != int(year/100)):
print(temp + ' 是闰年!')
else:
print(temp + ' 不是闰年!')
用户只有输入了Q才能退出。 heidern0612 发表于 2018-11-21 16:44
我也不是大佬,我也是新人,刚学没多久。我可以给你个思路:
1、如果你想一直循环不退出的话,就直 ...
牛逼!(破音)谢谢!~ heidern0612 发表于 2018-11-21 16:44
我也不是大佬,我也是新人,刚学没多久。我可以给你个思路:
1、如果你想一直循环不退出的话,就直 ...
我找到了一个韩信点兵的题目 就和第七节课后题爱因斯坦的数学题一样。题目如下:
韩信点兵,命令士兵每3人站一组,结果多出2名;接着命令士兵5人一组,结果多出3名;他又命令士兵7人一组,结果又少了2名,问总共有最少有多少兵?
最后这个命令士兵7人一组,结果又少了2名,怎样判定呀
Feather233 发表于 2018-11-22 10:20
我找到了一个韩信点兵的题目 就和第七节课后题爱因斯坦的数学题一样。题目如下:
韩信点兵,命令士兵每 ...
def test(people):
if people % 3 == 2 and people % 5 == 3 and people % 7 == 2:
return True
else:
return False
for i in range(1,300):
if test(i) == True:
print(f"应有兵{i}名" )
else:
pass
根据范围的不同,这个数字可以更大。
heidern0612 发表于 2018-11-22 13:34
根据范围的不同,这个数字可以更大。
哇谢谢!{:5_108:}信息量有点多好多新的内容 我研究一下 谢谢! 借帖子再问一个019讲
def findstr(destr,substr):
count = 0
length = len(destr)
if substr not in destr:
print('在目标字符串中未找到字符串')
else:
for each1 in range(length-1):
if destr == substr:
if destr == substr:
count +=1
print('子字符串在目标字符串中共出现%d次'% count)
destr = input("请输入目标字符串;")
substr = input("请输入子目标字符串;")
findstr(destr,substr)
其中 for each1 in range(length-1):
if destr == substr:
if destr == substr:
不明白这是什么意思,怎么寻找的,尤其是[]是什么意思 heidern0612 发表于 2018-11-22 13:34
根据范围的不同,这个数字可以更大。
兄弟 又来麻烦你了
#coding:utf-8
#题目:输入某年某月某日,判断这一天是这一年的第几天?
data = input('输入年月份,格式2016-05-12:')
#字符串切割
s = data.split("-")#以-为标志切割
if(len(s == 3)):
#赋值
year = int(s)
mon = s
day = s
print (mon)
# python没有switch case 用字典方式
else:
print('输入有误')
da={'1':0,'2':31,'3':59,'4':90,'5':120,'6':151,'7':181,'8':212,'9':243,'10':273,'11':304,'12':334}
def f(x):
return da.get(x)
sum = int(f(mon)) + int(day)
if(year %400 == 0 or (year %4 == 0 and year %100 != 0)):
if(int(mon) >= 3):
sum += 1
print(sum)
运行然后报错
Traceback (most recent call last):
File "G:/小甲鱼教程/算法题/求第几天.py", line 8, in
if(len(s == 3)):
Type Error: object of type 'bool' has no len()
说布尔类型没有长度 但是我已经切割了呀这个 是怎么回事 求解!
Feather233 发表于 2018-12-3 15:37
兄弟 又来麻烦你了
#coding:utf-8
#coding:utf-8
#题目:输入某年某月某日,判断这一天是这一年的第几天?
data = input('输入年月份,格式2016-05-12:')
#字符串切割
s = data.split("-")#以-为标志切割
if(len(s == 3)):
#赋值
year = int(s)
mon = s
day = s
print (mon)
# python没有switch case 用字典方式
else:
print('输入有误')
da={'1':0,'2':31,'3':59,'4':90,'5':120,'6':151,'7':181,'8':212,'9':243,'10':273,'11':304,'12':334}
def f(x):
return da.get(x)
sum = int(f(mon)) + int(day)
if(year %400 == 0 or (year %4 == 0 and year %100 != 0)):
if(int(mon) >= 3):
sum += 1
print(sum)
heidern0612 发表于 2018-11-22 13:34
根据范围的不同,这个数字可以更大。
#coding:utf-8
#题目:输入某年某月某日,判断这一天是这一年的第几天?
data = input('输入年月份,格式2016-05-12:')
#字符串切割
s = data.split("-",1)#以-为标志切割
if(len(s == 3)):
#赋值
year = int(s)
mon = s
day = s
print (mon)
# python没有switch case 用字典方式
else:
print('输入有误')
da={'1':0,'2':31,'3':59,'4':90,'5':120,'6':151,'7':181,'8':212,'9':243,'10':273,'11':304,'12':334}
def f(x):
return da.get(x)
sum = int(f(mon)) + int(day)
if(year %400 == 0 or (year %4 == 0 and year %100 != 0)):
if(int(mon) >= 3):
sum += 1
print(sum)
heidern0612 发表于 2018-11-22 13:34
根据范围的不同,这个数字可以更大。
解决啦 不好意思
页:
[1]