input简介:
input()方法暂停程序等待用户输入,获取输入并赋给一个变量。
input接受的参数都是字符串
input会阻塞后面的程序
a = input('请输入:')
print('您输入的值为:{}'.format(a))
input
输入的值都是字符串,因为python
是一种强文本语言,不像php
之类的语言在使用运算符比较时可以强制转换类型,再进行比较,所以若想要得到其他类型的值,则需要使用例如int()
和eval()
之类函数进行转换。
a = input('请输入一个数值:')
print(type(a))
if a == 1:
print('123')
else:
print('abc')
if 要判断的条件: 条件成立时,要做的事情
if 判断条件1:
pass
elif 判断条件2:
pass
else:
pass
if 判断条件1:
pass
elif 判断条件2:
pass
elif 判断条件3:
pass
while 表达式:
循环体
i = 1
while i <= 10:
print(i)
i+=1
外层循环的初始值要放到外层循环外,内层循环的初始值一定要放到外层循环之内、内层循环之外,否则内层循环的初始值不会重新被赋值,就没法控制内层循环的循环次数
实际运用:
# 乘法口诀打印,详情请看课后作业题1,
i = 1
while i < 10:
j = 1
while j <= i:
m = i * j
print(f'{i}x{j}={m} ',end='')
j += 1
print()
i += 1
为什么要退出循环,这是很多人第一的想法,这里我们需要了解一个知识——死循环。永远停不下来的循环,叫做死循环。
死循环的标准格式:while True:循环体
可以简单的这样理解:for
循环主要用于那些我们知道循环次数的循环,而while
循环主要用于那些我们不知道具体循环多少次的循环,但是因为有些时候,我们根本不知道循环要何时结束,所以只能使用while
。
当然,有些循环用for和while都可以实现。
其实,你经常用到的一些程序就包含着while
循环。例如,游戏程序就在一个大的while循环中,在玩家退出时停止运行。用while循环能让程序在用户没有让它停止之前一直运行,这点是for循环做不到的。
所以在这里,退出循环就十分重要。可使用的有break
和continue
,接下来,我们将详细介绍他们的使用方法。
while
循环,不在运行循环体中余下的代码,也不管while
后面跟的表达式是真是假,可以使用break
语句。判断输入的数是不是质数
,进行演示# 判断一个数是不是质数
a = int(input('请输入一个自然数:'))
i = 2
while i
运用讲解:
这里因为要用到的自然数是用户自己输入的,所以在代码运行前根本不知道需要循环多少次,所以使用while
循环,然后我们只需要判断这个数是不是质数,所以只需要将数值a被从2到a-1的数都除一遍,只要再其中有一步可以的余数是0,就可以判断其不是质数,既可以不用再接着运行,这时就可以使用break强制退出,break之后的代码将不在运行。
continue
和break
的区别在于,前者跳出当前(本次)循环,而后者跳出整个循环。二者既可用于while也可用于for。打印比输入的数小的所有奇数
,进行演示# 打印比输入的数小的所有奇数
a = int(input('请输入一个数值:'))
i = 0
while i < a:
i += 1
if i % 2 == 0:
continue
print(i)
运用讲解:这里其实跟break大体上是用法差不多,因为要打印所有的比输入的数小的奇数,所以在这里只用弹出本次循环即可,如果这里使用break,将只会得到一个值1。
while循环
的时候,忘记给判断条件中的循环变量进行递增或递减的操作,而导致把循环语句写成无限循环例如:(像如下这样这些就不会有任何问题)
a = 1
while a <= 5:
print(a)
a += 1
但是像下面这样没有写a+=1,a的值就会一直是1,然后就会使循环无限运行
a = 1
while a <= 5:
print(a)
运算符说明 | Python运算符 | 优先级 | 结合性 | 优先级顺序 |
---|---|---|---|---|
小括号 | () | 19 | 无 | 高 |
索引运算符 | x[i] 或x[i1: i2 [:i3] | 18 | 左 | ↑ |
属性访问 | x.attribute | 17 | 左 | ↑ |
乘方 | ** | 16 | 左 | ↑ |
按位取反 | ~ | 15 | 右 | ↑ |
符号运算符 | + (正号)、- (负号) | 14 | 右 | ↑ |
乘除 | *、/、//. % | 13 | 左 | ↑ |
加减 | +、- | 12 | 左 | ↑ |
位移 | >>、<< | 11 | 左 | ↑ |
按位与 | & | 10 | 右 | ↑ |
按位异或 | ^ | 9 | 左 | ↑ |
按位或 | | | 8 | 左 | ↑ |
比较运算符 | ==、!=、>、>=、<、<= | 7 | 左 | ↑ |
is 运算符 | is、is not | 6 | 左 | ↑ |
in运算符 | in、not in | 5 | 左 | ↑ |
逻辑非 | not | 4 | 右 | ↑ |
逻辑与 | and | 3 | 左 | ↑ |
逻辑或 | or | 2 | 左 | ↑ |
逗号运算符 | exp1, exp2 | 1 | 左 | 低 |
#乘法口诀表
# while正序
i=1
while i<=9:
j=1
while j<=i:
m = i*j
print(f'{i}x{j}={m} ',end='')
j+=1
i+=1
print()
# while逆序
i=9
while i>=1:
j=9
while j>=(10-i):
m = i*j
print(f'{i}x{j}={m} ',end='')
j+=-1
i+=-1
print()
运用到
while循环语句,while循环嵌套,if语句,f-string站位符
。
先另i=1,然后外循环每次循环i都递增1,总共循环9次,内循环前先另j=1,这样每次外循环,j的值都会被赋成1,然后使用while判断j 如外循环第一次循环,i=1,则内循环就循环1次、外循环第二次循环,i=2,则内循环就循环2次,以此类推
。
逆序的思路大体上差不多,就是在内循环的时候调整一下判断条件,使得内循环次数递减。
如外循环第一次循环,i=1,则内循环就循环(10-i次)也就是9次、外循环第二次循环,i=2,则内循环就循环(10-i次)8次,以此类推
。
# 求1000以内所有的水仙花数
i = 100
sum='1000以内所有的水仙花数为:'
while i < 1000:
a = i//100
b = i % 100//10
c = i % 10
if i == a**3+b**3+c**3:
sum += ' {}'.format(i)
i += 1
print(sum)
首先要知道什么事水仙花数:
- 水仙花数又称阿姆斯特朗数。
三位的水仙花数共有4个:153,370,371,407;
四位的四叶玫瑰数共有3个:1634,8208,9474;
五位的五角星数共有3个:54748,92727,93084;
六位的六合数只有1个:548834;
七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;
八位的八仙花数共有3个:24678050,24678051,88593477使用循环语句和
if
语句的嵌套,运用while
让从100到1000的每一个数值都进行判断,将百位数,十位数,个位数都提取出来分别赋值a、b、c
,然后判断水仙花数,如果是水仙花数,则将其赋值添加给sum
,最后在所有的判断结束后输出sum
,得到三位数的水仙花数。
# 获取用户输入的任意数,判断其是否是质数?
while True:
num = int(input('请输入一个整数:'))
if num > 1:
break
else:
print('请输入一个大于1的整数:')
num = int(input('请输入一个数字:'))
if num == 2 or num == 3:
print('您输入的数字{0}是质数'.format(num))
else:
i = 2
while i < num:
if num % i == 0:
print('您输入的数字{0}不是质数,可被{1}整除'.format(num,i))
break
else:
i += 1
if num == i:
print('您输入的数字{0}是质数'.format(num))
运用while语句及if语句的嵌套,再这里,我为了输入的数更合理,所以先进行了判断,因为质数肯定都都是自然数,所以先判断用户输入的值是否大于等于1,是则继续,如果不是就提示用户重新输入。
然后就是开始数值判断,首先如果用户输入2、3这2个数值,则肯定是质数,然后我们开始判断这个数是不是质数,所以只需要将数值a被从2到a-1的数都除一遍,只要再其中有一步可以的余数是0,就可以判断其不是质数,既可以不用再接着运行,直接输出改数不是质数,并输出其可被什么数整除。
否则一直到循环结束,如果i的值与用户输入的sum值相等,则可以输出此数值就是质数。
# 猜拳游戏:
# • 出拳 玩家:手动输入 电脑:随机输入
# • 判断输赢: 玩家获胜 电脑获胜 平局
import random # 导入随机模块
A=["剪刀","石头","布"]
while True:
a=input("请输入代表数值(剪刀0 、石头1 、布2):") # 将输入的数据转化为整型
c=random.randint(0,2) # 随机一个0到2的整数
if a.isdigit() and a in ['0','1','2']: # 是否为数字,且在出拳数字内
a=int(a) # 转换为整型
if a==c: # 平局条件
print("平局 ",end='')
elif a-c==1 or c-a==2: # 赢局条件
print("玩家获胜 ",end='')
else: # 输局
print("电脑获胜 ",end='')
print("玩家出%s,电脑出%s" % (A[a], A[c])) # 显示出双方出拳
else: # 输入错误
print("玩家没正确出拳")
- 这里首先要引入random 随机模块的知识点:
random.random():生成一个0-1之间的随机浮点数
random.randint(a,b):生成[a,b]之间的整数,包含a,b
random.uniform(a,b):生成[a,b]之间的浮点数
random.choice(sequence):从特定序列的中随机取一个元素,这里的序列可以是字符列表,元组等。这里我们运用的是randint(a,b),还运用了列表的索引,这里是关键,想了好久呢,最后就是if及while的嵌套,这里其实可以不用使用while循环的,但是因为每次运行都要重新操作,比较麻烦,所有加上了一个循环,然后input语句有阻断程序的作用,也不用担心会死循环。
然后我们首先这里定义一个A的列表,并使A=["剪刀","石头","布"]
,这样A[0]=“剪刀”,A[1]=“石头”,A[2]=“布”,并使用randint随机模块,随机将0~2之间的任意一个数值复制给c。
之后就是判断的环节了,我们先判断一下用户输入的是不是我们想要的0、1、2之间的数字
,是的话就进行下一步判断,如果a==c,既用户与电脑的值一样,则是平局
,如果 a-c == 1 或者 c-a == 2中有一个成立,既用户赢
。
这里可能有一丝丝的小饶,且听我缓缓道来,举个例子:用户出的是石头,既a=1,电脑出剪刀,既c=0
,用户才可以赢,还有2种赢的情况就是,用户出步,既a=2,电脑出石头,既c=1
,以及用户出剪刀,既a=0,电脑出步,既c=2
。
在这里,就可以得到判断条件 a-c == 1 或者 c-a == 2中只要有一个成立,则用户就赢了,其他非平局的情况,都是电脑赢
。
# 使用for循环打印乘法口诀表
# for正序
for i in range(1,10):
for j in range(1,i+1):
print(str(i)+"*"+str(j)+"="+str(i*j)+" ",end="")
print()
# for逆序
for i in range(9,0,-1):
for j in range(i,0,-1):
print(str(i)+"*"+str(j)+"="+str(i*j)+" ",end="")
print()
# 输入月份得到季节
a = int(input('请输入月份:'))
if a == 3 or a == 4 or a == 5:
print('{0}月份为春季'.format(a))
elif a == 6 or a == 7 or a == 8:
print('{0}月份为夏季'.format(a))
elif a == 9 or a == 10 or a == 11:
print('{0}月份为秋季'.format(a))
elif a == 12 or a == 1 or a == 2:
print('{0}月份为冬季'.format(a))
# 求100以下的偶数之和
i = 1
sum = 0
while i <= 100:
if i%2 == 0:
sum += i
i += 1
print(sum)
在学习的道路上,没有捷径可以走,只有投入时间去努力,才会有收获,这篇文章花了很长时间,包括在代码上的一些想法以及运用,也花了许久,但是当我每每一个问题想通时,那种愉悦感又使得整个人都为之振奋,怎么说呢,反正这种感觉很nice,还有满满的收获,感觉特别充实。 φ(゜▽゜*)♪