以下实例 x 为 0-99 取一个数,y 为 0-199 取一个数,如果 x>y 则输出 x,如果 x 等于 y 则输出 x+y,否则输出y。
#!/usr/bin/python3import random
x = random.choice(range(100))
y = random.choice(range(200))if x > y:print('x:',x)elif x == y:print('x+y:', x + y)else:print('y:',y)
数字猜谜游戏优化
print('二、数字猜谜游戏')print('数字猜谜游戏!')
a =1
i =0while a !=20:
a =int(input ('请输入你猜的数字:'))
i +=1if a ==20:if i<3:print('真厉害,这么快就猜对了!')else:print('总算猜对了,恭喜恭喜!')elif a <20:print('你猜的数字小了,不要灰心,继续努力!')else:print('你猜的数字大了,不要灰心,继续加油!')
#!/usr/bin/python3# 继续扩展,加入用户提示判断是否退出还是继续print("=======欢迎进入狗狗年龄对比系统========")
control ="N"while control=="N":try:
age =int(input("请输入您家狗的年龄:"))#print(" ")
age =float(age)if age <0:print("您在逗我?")elif age ==1:print("相当于人类14岁")#breakelif age ==2:print("相当于人类22岁")#breakelse:
human =22+(age -2)*5print("相当于人类:",human)#breakexceptValueError:print("输入不合法,请输入有效年龄")print("")
control = input("退出(Y/N)?")print("")###退出提示
input("点击 enter 键退出")
name ="pag"if name =="pag":print(name=="pag")# Trueif(name =="pag"):{print(name =="pag")# True}
if 可以括号限定代码域,加强代码可读性。
这种说法是不正确的,python 代码块只有缩进。
不妨把花括号里面多加一行,就发现会报错:
if(name =="pag"):{print(name =="pag")print("line 2 of if condition")}
报错信息:
File"test.py", line 4print("line 2 of if condition")^SyntaxError: invalid syntax
而 if 后花括号一条 print 语句之所以没报错,是因为花括号括起来的是一个集合,相当于条件为 True 的时候定义一个集合,我们不妨以相似的方式定义两个集合 aa,bb。
name ="pag"
aa={print(name =="pag")}
bb={print(name =="pag"),"BBBB"}print(aa)print(bb)
输出结果如下:
TrueTrue{None}{'BBBB',None}
取随机数扩展。取随机数直到两数相等,显示取数次数。
import random
x = random.choice(range(100))
y = random.choice(range(100))
b,c = x,y
a =1print(x,y)while x != y:if x > y:print('x:',x)elif x == y:print('x+y:', x + y,'totall cal ',a,'times')else:print('y:',y)
x = random.choice(range(100))
y = random.choice(range(100))
a = a+1print('initialized data:',b,c,'x+y:', x + y,'total cal ',a,'times')
elif 还不会执行到,优化如下:
import random
a =0whileTrue:
x = random.choice(range(100))
y = random.choice(range(100))
a = a+1if x > y:print(x,'>',y)elif x < y:print(x,'<',y)else:print('x=y=', x,'total cal ', a,'times')break
# 查询 n 到 m 间的所有素数def find_prime_number(n, m):if isinstance(n,int)and isinstance(m,int):if m <=1:return"error range"if1>= n > m:return"error start"
numbers = list()
num = n
while num <= m:
i =2while i < num:if(num % i ==0)and(num != i):breakelse:
i +=1if num == i:
numbers.append(num)
num +=1return numbers
else:return"error input"print(find_prime_number(1,100))
在 if...elif...else 的多个语句块中只会执行一个语句块,例如:
age =int(input("请输入你家狗狗的年龄: "))print("")if age <=0:print("你是在逗我吧!")elif1<= age <=2:#与下一个elif条件重复,只执行符合条件的第一个语句块print("相当于 14 岁的人。")elif age ==2:print("相当于 22 岁的人。")elif age >2:
human =22+(age -2)*5print("对应人类年龄: ", human)
以下实例 x 为 0-99 取一个数,y 为 0-199 取一个数,如果 x>y 则输出 x,如果 x 等于 y 则输出 x+y,否则输出y。
#!/usr/bin/python3 import random x = random.choice(range(100)) y = random.choice(range(200)) if x > y: print('x:',x) elif x == y: print('x+y:', x + y) else: print('y:',y)
数字猜谜游戏优化
print('二、数字猜谜游戏') print('数字猜谜游戏!') a = 1 i = 0 while a != 20: a = int (input ('请输入你猜的数字:')) i += 1 if a == 20: if i<3: print('真厉害,这么快就猜对了!') else : print('总算猜对了,恭喜恭喜!') elif a < 20: print('你猜的数字小了,不要灰心,继续努力!') else : print('你猜的数字大了,不要灰心,继续加油!')
#!/usr/bin/python3 # 继续扩展,加入用户提示判断是否退出还是继续 print("=======欢迎进入狗狗年龄对比系统========") control = "N" while control=="N": try: age = int(input("请输入您家狗的年龄:")) #print(" ") age = float(age) if age < 0: print("您在逗我?") elif age == 1: print("相当于人类14岁") #break elif age == 2: print("相当于人类22岁") #break else: human = 22 + (age - 2)*5 print("相当于人类:",human) #break except ValueError: print("输入不合法,请输入有效年龄") print("") control = input("退出(Y/N)?") print("") ###退出提示 input("点击 enter 键退出")
条件为假:0, false, '', None, 例子如下:
>>> a=0 >>> if a: ... print(11) ... else: ... print(22) ... 22 >>> a=None >>> if a: ... print(11) ... else: ... print(22) ... 22 >>>
条件为真:不为 0, True, 'None', 字符串不为空串
>>> a=2 >>> if a: ... print(11) ... else: ... print(22) ... 11 >>> a="None" >>> if a: ... print(11) ... else: ... print(22) ... 11 >>> a='bbbb' >>> if a: ... print(11) ... else: ... print(22) ... 11 >>>
使用判断语句来实现 BMI 的计算。
BMI 指数(即身体质量指数,简称体质指数又称体重,英文为 Body Mass Index,简称BMI),是用体重公斤数除以身高米数平方得出的数字
#!/usr/bin/env python3 print('----欢迎使用BMI计算程序----') name=input('请键入您的姓名:') height=eval(input('请键入您的身高(m):')) weight=eval(input('请键入您的体重(kg):')) gender=input('请键入你的性别(F/M)') BMI=float(float(weight)/(float(height)**2)) #公式 if BMI<=18.4: print('姓名:',name,'身体状态:偏瘦') elif BMI<=23.9: print('姓名:',name,'身体状态:正常') elif BMI<=27.9: print('姓名:',name,'身体状态:超重') elif BMI>=28: print('姓名:',name,'身体状态:肥胖') import time; #time模块 nowtime=(time.asctime(time.localtime(time.time()))) if gender=='F': print('感谢',name,'女士在',nowtime,'使用本程序,祝您身体健康!') if gender=='M': print('感谢',name,'先生在',nowtime,'使用本程序,祝您身体健康!')
下表列出了不同数值类型的 true 和 false 情况:
if 的两种格式:
可以括号限定代码域,加强代码可读性。
name ="pag" if name == "pag": print(name=="pag") # True if (name == "pag"):{ print(name == "pag") # True }
if 可以括号限定代码域,加强代码可读性。
这种说法是不正确的,python 代码块只有缩进。
不妨把花括号里面多加一行,就发现会报错:
if (name == "pag"):{ print(name == "pag") print("line 2 of if condition") }
报错信息:
File "test.py", line 4 print("line 2 of if condition") ^ SyntaxError: invalid syntax
而 if 后花括号一条 print 语句之所以没报错,是因为花括号括起来的是一个集合,相当于条件为 True 的时候定义一个集合,我们不妨以相似的方式定义两个集合 aa,bb。
name = "pag" aa={print(name == "pag")} bb={print(name == "pag"),"BBBB"} print(aa) print(bb)
输出结果如下:
True True {None} {'BBBB', None}
取随机数扩展。取随机数直到两数相等,显示取数次数。
import random x = random.choice(range(100)) y = random.choice(range(100)) b,c = x,y a = 1 print(x,y) while x != y: if x > y: print('x:',x) elif x == y: print('x+y:', x + y,'totall cal ',a,'times') else: print('y:',y) x = random.choice(range(100)) y = random.choice(range(100)) a = a+1 print('initialized data:',b,c,'x+y:', x + y,'total cal ',a,'times')
elif 还不会执行到,优化如下:
import random a = 0 while True: x = random.choice(range(100)) y = random.choice(range(100)) a = a+1 if x > y: print(x,'>',y) elif x < y: print(x,'<',y) else: print('x=y=', x, 'total cal ', a, 'times') break
如果 if 语句中的条件过长,可以用接续符 \ 来换行。
例如:
if 2>1 and 3>2 and 4>3 and \ 5>4 and 6>5 and 7>6 and \ 8>7: print("OK")
注意: \ 后的一行要缩进没有要求,可无序缩进,但我们保持代码的可读性一般设置同样的缩进格式。
实例:
# 查询 n 到 m 间的所有素数 def find_prime_number(n, m): if isinstance(n, int) and isinstance(m, int): if m <= 1: return "error range" if 1 >= n > m: return "error start" numbers = list() num = n while num <= m: i = 2 while i < num: if (num % i == 0) and (num != i): break else: i += 1 if num == i: numbers.append(num) num += 1 return numbers else: return "error input" print(find_prime_number(1, 100))
在 if...elif...else 的多个语句块中只会执行一个语句块,例如:
age = int(input("请输入你家狗狗的年龄: ")) print("") if age <= 0: print("你是在逗我吧!") elif 1 <= age <=2: #与下一个elif条件重复,只执行符合条件的第一个语句块 print("相当于 14 岁的人。") elif age == 2: print("相当于 22 岁的人。") elif age > 2: human = 22 + (age - 2) * 5 print("对应人类年龄: ", human)
因此,在写 elif 条件时一定要做到互不重复。