while循环

        在给定的判断条件为 true 时执行循环体,否则退出循环体。基本语法:

while bool表达式:    循环体【else:    语句块】

【例】实现1-100的求和计算

i=1sum=0while i<=100:    sum+=i    i+=1print("1-100的和为:%d"%sum)

程序执行结果如下:

C:\Users\zemuerqi\PycharmProjects\Python2020\venv\Scripts\python.exe C:/Users/zemuerqi/PycharmProjects/Python2020/test.py1-100的和为:5050Process finished with exit code 0

for循环

基本语法:

for 变量名 in 可迭代对象:       循环体【else:    语句块】

【例】使用for循环完成1-100的求和计算

sum=0for i in range(1,101):    sum+=iprint(sum)

思考

Q:如何使用上述两种循环完成1-100之间的奇数和以及偶数和的计算
R:参考答案:

sum_odd = 0; sum_even = 0for i in range(1, 101):       if i % 2 != 0:           #奇数               sum_odd += i         #奇数和        else:                    #偶数                sum_even += i        #偶数和print("1~100中所有奇数的和:", sum_odd)print("1~100中所有偶数的和:", sum_even)

程序执行结果如下:

C:\Users\zemuerqi\PycharmProjects\Python2020\venv\Scripts\python.exe C:/Users/zemuerqi/PycharmProjects/Python2020/test.py1~100中所有奇数的和: 25001~100中所有偶数的和: 2550Process finished with exit code 0

循环嵌套

        在一个循环体内又包含另一个完整的循环结构,称为循环的嵌套【】利用嵌套循环打印运行效果如图下图所示的九九乘法表(nest_for.py)

for i in range(1, 10):             #外循环        s = ""        for j in range(1, 10):         #内循环                s += str.format("{0:1}*{1:1}={2:<2} ", i, j, i * j)

上述代码输出结果如下图:

python用while求1到100的乘积 python用while循环求1到100的和_字符串

思考

请修改上述程序,分别打印如图所示的2个九九乘法表:        

python用while求1到100的乘积 python用while循环求1到100的和_shell while 结束循环_02

python用while求1到100的乘积 python用while循环求1到100的和_python while 循环 全局变量_03

break语句

  • 用于退出for、while循环,即提前结束循环,接着执行循环语句的后继语句
  • 当多个for、while语句彼此嵌套时,break语句只应用于最里层的语句,即break语句只能跳出最近的一层循环

】使用break语句终止循环(break.py)

while True:       s = input('请输入字符串(按Q或者q结束):')       if s.upper() == 'Q':               break       print('字符串的长度为:', len(s)

程序执行结果如下:

C:\Users\zemuerqi\PycharmProjects\Python2020\venv\Scripts\python.exe C:/Users/zemuerqi/PycharmProjects/Python2020/test.py请输入字符串(按Q或者q结束):wuzemu字符串的长度为:6请输入字符串(按Q或者q结束):您好!木头编程字符串的长度为:7请输入字符串(按Q或者q结束):QProcess finished with exit code 0

思考

Q:编程(prime1.py和prime2.py)判断所输入的任意一个正整数是否为素数(使用for和while两种循环方式)
R:参考答案:

方法一(利用for循环和break语句):import mathm = int(input("请输入一个整数(>1):"))k = int(math.sqrt(m))for i in range(2, k + 2):       if m % i == 0:               break  #可以整除,肯定不是素数,结束循环if i == k+1 : print(m, "是素数!")else: print(m, "是合数!")方法二(利用while循环和bool变量):import mathm = int(input("请输入一个整数(>1):"))k = int(math.sqrt(m))flag = True                    #先假设所输整数为素数i = 2while (i <= k and flag == True):       if (m % i == 0): flag = False   #可整除,肯定非素数,结束循环       else: i += 1if (flag == True): print(m, "是素数!")else: print(m, "是合数!")

continue语句

  • 结束本次循环,即跳过循环体内自continue下面尚未执行的语句,返回到循环的起始处,并根据循环条件判断是否执行下一次循环
  • continue语句与break语句的区别:
    continue语句仅结束本次循环,并返回到循环的起始处,循环条件满足的话就开始执行下一次循环;而break语句则是结束循环,跳转到循环的后继语句执行

【例】使用continue语句跳过循环。要求输入若干学生成绩(按Q或q结束),如果成绩<0,则重新输入。统计学生人数和平均成绩

num = 0scores = 0  #初始化学生人数和成绩和while True:       s = input('请输入学生成绩(按Q或q结束):')       if s.upper() == 'Q':               break       if float(s) < 0:   #成绩必须>=0               continue       num += 1       #统计学生人数       scores += float(s) #计算成绩之和print("学生人数:%d,平均分:%d"%(num,scores/num))

程序输出结果是:

C:\Users\zemuerqi\PycharmProjects\Python2020\venv\Scripts\python.exe C:/Users/zemuerqi/PycharmProjects/Python2020/test.py请输入学生成绩(按Q或q结束):89请输入学生成绩(按Q或q结束):90请输入学生成绩(按Q或q结束):60请输入学生成绩(按Q或q结束):q学生人数:3,平均分:79Process finished with exit code 0

死循环

  • 如果while循环结构中循环控制条件一直为真,则循环将无限继续,程序将一直运行下去,从而形成死循环程序死循环时,会造成程序没有任何响应;或者造成不断输出(例如控制台输出,文件写入,打印输出等)在程序的循环体中,插入调试输出语句print,可以判断程序是否为死循环。注意,有的程序算法十分复杂,可能需要运行很长时间,但并不是死循环可以使用快捷键+终止当前程序的运行

】死循环示例(infinite.py)

while True:       #循环条件一直为真      num = float(input("请输入一个正数:"))      print("该数是:%f"%num)print("Good bye!")

else子句

  • 】使用for语句的else子句(for_else.py)
hobbies = ""for i in range(1, 3 + 1):       s = input('请输入爱好之一(最多三个,按Q或q结束):')       if s.upper() == 'Q':               break       hobbies += s + ' 'else:       print('您输入了三个爱好。')print('您的爱好为:', hobbies)

程序执行结果如下:

C:\Users\zemuerqi\PycharmProjects\Python2020\venv\Scripts\python.exe C:/Users/zemuerqi/PycharmProjects/Python2020/test.py请输入爱好之一(最多三个,按Q或q结束):唱歌请输入爱好之一(最多三个,按Q或q结束):跳舞请输入爱好之一(最多三个,按Q或q结束):冲浪您输入了三个爱好。您的爱好为:唱歌 跳舞 冲浪Process finished with exit code 0

课后练习

1.for i in [1, 0]:
    print(i+1)
以上代码输出结果为?
A、2            1
B、[2, 1]
C、2
D、0
2.Python 中,for 和 while 可以有 else 语句?
A、只有 for 才有 else 语句。
B、只有 while 才有 else 语句。
C、for 和 while 都可以有 else 语句。
D、for 和 while 都没有 else 语句。
3.
i = sum = 0
while i <= 4:
    sum += i
    i = i+1
print(sum)
以上代码输出的结果是?
A、0
B、10
C、4
D、以上结果都不对。
4. while 4 == 4:
    print('4')
以上代码输出的结果是?
A、输出一次 4。
B、输出四次 4。
C、无限次输出 4,直到程序关闭。
D、语法错误。
5. 迭代输出序列时(如:列表)使用 for 比 while 更好?
A、错误,while 比 for 更好。
B、正确
C、错误,while 不能用于迭代系列。
D、错误,for 和 while 都不能用于迭代系列。
6. 以下哪个描述是正确的?
A、break 语句用于终止当前循环。
B、continue 语句用于跳过当前剩余要执行的代码,执行下一次循环。
C、break 和 continue 语句通常与 if, if...else 和 if...elif...else 语句一起使用。
D、以上说法都是正确的。
7. for char in 'PYTHON STRING':
  if char == ' ':
      break
  print(char, end='')
  if char == 'O':
      continue
以上代码输出的结果是?
A、PYTHON
B、PYTHONSTRING
C、PYTHN
D、STRING