python 学习笔记(2)——分支与循环
Contents
分支与循环
分支结构
在 Python 里面也就是 if
语句辣。
这个当然大多数语言都是差不多的。
基本语法
总体上支持 if
、elif
、else
三种关键字。
举个例子:
if a > b and a > c:
print(a)
elif b > a and b > c:
print(b)
else:
print(c)
应该没了。反正递进嵌套也没啥特别的。
循环结构
在 Python 中主要就是 for-in
循环和 while
循环两种。
for-in
循环
直接上例子:
sum = 0
for x in range(101):
sum += 1 / x
print(sum)
这里的
range(101)
构造了一个 $0 \sim 100$ 的范围,相当于构成了一个整数序列用于循环,其更多使用方法如下:
range(n)
产生一个 $0 \sim n - 1$ 的整数序列。range(l, r)
产生一个 $l \sim r - 1$ 的整数序列。range(l, r, step)
产生一个 $l \sim r - 1$ 步长为 $step$ 的整数序列,步长就是数值序列的增量。
for-in
循环实际上是对于一个容器的遍历,这里的 range()
函数产生的是比较简单的整数序列容器,其他容器留待后面再讲。
while
循环
听着名字就能猜到咋用了吧。
就是当 while
后的条件成立时不断执行,跟 C/C++ 一毛一样(应该吧)。
举个例子:(来自原文)
"""
猜数字游戏
计算机出一个1~100之间的随机数由人来猜
计算机根据人猜的数字分别给出提示大一点/小一点/猜对了
Version: 0.1
Author: 骆昊
"""
import random
answer = random.randint(1, 100)
counter = 0
while True:
counter += 1
number = int(input('请输入: '))
if number < answer:
print('大一点')
elif number > answer:
print('小一点')
else:
print('恭喜你猜对了!')
break
print('你总共猜了%d次' % counter)
if counter > 7:
print('你的智商余额明显不足')
这里用到的 break
和没有出现的 continue
都是跟 C/C++ 相同的用法,分别用于提前终止循环和直接进入下一轮循环。
原文“精选”习题
- 百分制成绩转换为等级制成绩:
要求:如果输入的成绩在90分以上(含90分)输出A;80分-90分(不含90分)输出B;70分-80分(不含80分)输出C;60分-70分(不含70分)输出D;60分以下输出E。
""" 百分制成绩转换为等级制成绩 Version: 0.1 Author: 骆昊 """ score = float(input('请输入成绩: ')) if score >= 90: grade = 'A' elif score >= 80: grade = 'B' elif score >= 70: grade = 'C' elif score >= 60: grade = 'D' else: grade = 'E' print('对应的等级是:', grade)
- 判断输入正整数是否为素数:
提示:素数指的是只能被1和自身整除的大于1的整数。
""" 输入一个正整数判断它是不是素数 Version: 0.1 Author: 骆昊 Date: 2018-03-01 """ from math import sqrt num = int(input('请输入一个正整数: ')) end = int(sqrt(num)) is_prime = True for x in range(2, end + 1): if num % x == 0: is_prime = False break if is_prime and num != 1: print('%d是素数' % num) else: print('%d不是素数' % num)
- 输出 $2000$ 以内所有素数:不提供参考程序。
百钱白鸡问题:不提供参考程序。
说明:百钱百鸡是我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?翻译成现代文是:公鸡5元一只,母鸡3元一只,小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?
- CRAPS 赌博游戏:
说明:CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子获得点数进行游戏。简单的规则是:玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;其他点数玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数,玩家继续要骰子,直到分出胜负。
""" Craps赌博游戏 我们设定玩家开始游戏时有1000元的赌注 游戏结束的条件是玩家输光所有的赌注 Version: 0.1 Author: 骆昊 """ from random import randint money = 1000 while money > 0: print('你的总资产为:', money) needs_go_on = False while True: debt = int(input('请下注: ')) if 0 < debt <= money: break first = randint(1, 6) + randint(1, 6) print('玩家摇出了%d点' % first) if first == 7 or first == 11: print('玩家胜!') money += debt elif first == 2 or first == 3 or first == 12: print('庄家胜!') money -= debt else: needs_go_on = True while needs_go_on: needs_go_on = False current = randint(1, 6) + randint(1, 6) print('玩家摇出了%d点' % current) if current == 7: print('庄家胜') money -= debt elif current == first: print('玩家胜') money += debt else: needs_go_on = True print('你破产了, 游戏结束!')
- (抖机灵)输出斐波那契第 $n$ 个数:你可以选择看看或者秒杀。
说明:$n \le 10^{18}$,因为答案过大,只需要输出对 $10^9 + 7$ 取模的结果即可。
No Comments