Python学习Day4

第一个程序:
print ("hello World!")

变量:存储信息,被日后调用、修改操作。
常量:固定不变的量,通常字母大写

命名规则:
1、由字母数字下划线组成
2、不能以数字开头,不能含有特殊字符和空格
3、不能以保留字符命名
4、不要以汉字命名
5、变量名应具有意义,可读性
6、驼峰式命名或下划线分隔单词命名
7、区分大小写
例如:student_Name为标准命名
name和Name为两个不同变量(区分大小写)
每个变量都是独立的个体。

print ("打印显示内容")
输入内容:
score = int(input("请输入成绩:"))
变量名称 转为整数 输入 提示内容
input接受的内容默认全部为字符串

判断语句:
a = 1
b = 2
if a == b:
print("A")
print("A")
print("A")
elif a > b:
print("B")
else:
print("C")

print前必须使用Tab对齐,Tab设置为四个空格,避免Windows和Linux不兼容。
程序执行过程中遇到匹配的条件,即停止执行,后面的不再执行。

注释:
#单行注释
'''多行注释'''或者"""多行注释"""
注释用来对代码进行解释说明,方便阅读,主要写代码是用来做什么的。

数据类型分为int(整数)和chr(字符串),不同类型的数据之间不可以进行加减等运算,字符串只能相加,相当于前后拼接。
字符串类型的强制转换:int(str(b))
字符编码应使用UTF-8

字符串的拼接:
print ("abc","qwe")

print ("abc"+"qwe")
输出结果不同,分别为
abc qwe

abcqwe
第一种有空格,第二种没有
如果要拼接两种数据类型的字符串,应当进行转换,例如:
print (chr(x)+"乘以"+chr(y)+"=",z)
将整数类型的变量x转换为字符串类型后再与字符串文字进行拼接。

算术运算符:
数字可以进行+-*/运算,//为整除,也叫地板除,比如5//2=2,%为取余数,比如9%2=1,**为次方,比如2**10是2的10次方。
优先级问题:2**3*5是2的3次方乘以5,而不是2的15次方,因为**的优先级高于*
如果分不清优先级,可以用括号,例如:(2+(2**3))*5=50

Python的文件扩展名为.py,

True表示正确的,真的,成功了;False表示错误的,假的,失败了。
一个=为赋值,两个==为比较,!=为不等于,
if a > b:
if a<c:
print("True")
else:
print("Flase")
这段代码等于
if b <a <c:
print("True")
else:
print("Flase")
下面的代码更简洁
表达式和运算符

什么是表达式?

1+2*3 就是一个表达式,这里的加号和乘号叫做运算符,1、2、3叫做操作数。1+2*3 经过计算后得到的结果是7,就1+2*3 = 7。我们可以将计算结果保存在一个变量里,ret = 1-2*3 。 所以表达式就是由操作数和运算符组成的一句代码或语句,表达式可以求值,可以放在“=”的右边,用来给变量赋值。
赋值运算符: = 、+= -= *= /= %= //= **=

>>> num = 2
>>> num += 1 # 等价于 num = num + 1
>>> num -= 1 # 等价于 num = num - 1
>>> num *= 1 # 等价于 num = num * 1
>>> num /= 1 # 等价于 num = num / 1
>>> num //= 1 # 等价于 num = num // 1
>>> num %= 1 # 等价于 num = num % 1
>>> num **= 2 # 等价于 num = num ** 2

比较运算符:>、 <、 >=、 <=、 ==、!= True False简单讲一下

顾名思义,比较运算符是用来做比较的,比较的结果会有两种,分别是成立和不成立,成立的时候,结果是 True,不成立的时候结果是False。 True和False 用来表示比较后的结果。

>>> a = 5
>>> b = 3
>>> a > b # 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。
True
>>> a < b # 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。
False
>>> a <= b # 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。
False
>>> a >= b # 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。
True
>>> a == b # 检查,两个操作数的值是否相等,如果是则条件变为真。
False
>>> a != b # 检查两个操作数的值是否相等,如果值不相等,则条件变为真。
True

逻辑运算符: not 、and、 or

逻辑运算符是用来做逻辑计算的。像我们上面用到的比较运算符,每一次比较其实就是一次条件判断,都会相应的得到一个为True或False的值。而逻辑运算符的的操作数就是一个用来做条件判断的表达式或者变量。


>>> a > b and a < b # 如果两个操作数都是True,那么结果为True,否则结果为False。
False
>>> a > b or a < b # 如果有两个操作数至少有一个为True, 那么条件变为True,否则为False。
True
>>> not a > b # 反转操作的状态,操作数为True,则结果为False,反之则为True
False

结果为True的时候,我们一般称 结果为 真, 逻辑运算符会有一个真值表。

优先级

运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 'AND'
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符

优先级为:or < and <no
例:
True or True and False 也就是 True or (True and False)
结果为True
not not True or False and not True 也就是 (not (not True)) or ((not False) and (not True))
结果为 True
计算的时候,可以先把nou与后面加个括号进行计算,再把and包含的内容加括号进行计算,or最后计算。
也就是短路原则:
条件1 and 条件2 如果条件1为真,则计算条件2,如果真则输出为真,为假则输出假;如果条件1为假,则条件2不再计算直接输出假。
条件1 or 条件2 如果条件1为真,则不再计算条件2直接输出假,如果条件1为假,则计算条件2,如果条件2为真则输出真,为假则输出假。

可以加括号来确定优先级,例如:
a>b and (c>d or (not e>f))

找出输入的三个数中的最大数:
num1 = int(input("请输入数字1:"))
num2 = int(input("请输入数字2:"))
num3 = int(input("请输入数字3:"))
max_num = 0

if num1 > num2:
max_num = num1
if max_num > num3:
print ("你输入的最大数为:",max_num)
else:
print ("你输入的最大数为:",num3)
else:
max_num = num2
if max_num > num3:
print ("你输入的最大数为:",max_num)
else:
print ("你输入的最大数为:",num3)

请输入三个数,然后从大到小排序输出
num_1= int(input("请输入第一个数字:"))
num_2= int(input("请输入第二个数字:"))
num_3= int(input("请输入第三个数字:"))
if (num_1==num_2)or(num_1==num_3)or(num_2==num_3):
print ("请重新输入")
else:
if num_1>num_2:
a= num_1
b= num_2
else:
a= num_2
b= num_1
if b>num_3:
print(a,">",b,">",num_3)
else:
if a>num_3:
print(a,">",num_3,">",b)
else:
print(num_3,">",a,">",b)

While循环:

输出1-10之间的整数:
num = 1 #定义变量num值为1
while num <= 10: #如果num的值小于等于10
print(num) #输出num
num += 1 #num的值+1
输出1-100之间的偶数:
num = 1
while num <= 100:
if num%2 == 0: #如果num除以2的余数等于0,也就是判定若num为偶数
print(num)
num += 1

猜年龄的升级版:
我个人的思路:
age_of_princal = 56
guess_age = 0

while guess_age != age_of_princal:
guess_age = int(input("请输入你猜想的年龄:"))
if guess_age == age_of_princal:
print("你猜对了,真厉害!")
elif guess_age > age_of_princal:
print("你猜大了,试试小的吧!")
else:
print("你猜小了,试试大的吧!")
Print("游戏结束")
教程里的代码:
age_of_princal = 56
flag = True
while flag:
guess_age = int(input("请输入你猜想的年龄:"))
if guess_age == age_of_princal:
flag=False
print("你猜对了,真厉害!")
elif guess_age > age_of_princal:
print("你猜大了,试试小的吧!")
else:
print("你猜小了,试试大的吧!")
print("游戏结束")
经测试两种方式都可以正常执行,是两种不同的思路,个人认为第一种较为简单,但第二种是正规的方法,有利于后期升级修改。

break语句: 终止,出现这个语句即终止循环。
示例:利用break语句,输出1-10之间整数的另一种方法:
num = 1
while num < 20:
print(num)
num += 1
if num == 11:
break
利用break语句实现猜年龄的方法:
age_of_princal = 56
while True:
guess_age = int(input("请输入你猜想的年龄:"))
if guess_age == age_of_princal:
print("你猜对了,真厉害!")
break
elif guess_age > age_of_princal:
print("你猜大了,试试小的吧!")
else:
print("你猜小了,试试大的吧!")
print("游戏结束")

另:python3  中 while 与 while true 有啥不区别 ?
while True 语句中一定要有结束该循环的break语句,否则会一直循环下去的,因此while true 更像是类同 与 for 一样的循环。
然而 while 则是 逻辑判断。

continue语句:终止当次循环,通俗来说就是当遇到continue时,在当次循环内终止后面的语句,继续下一个循环。
示例:输出1-10之间除了3之外的整数(04-07-45:00)
num = 0

while num <= 9:
num += 1
if num == 3:
continue
print(num)

else语句:当整个while循环正常结束了,才会执行,如果出现break语句,则else后的代码不会被执行(04-07-49:40)
示例:
num = 1

while num <= 10:
print(num)
num += 1
if num == 5:
break
else:
print("Test")
else后面的内容不会被执行。

end语句:关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符。
示例:
print("hello world.",end="")
print("hello world.",end="")
print("hello world.",end="")
输出为:hello world.hello world.hello world.

# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 1000:
print(b, end=',')
a, b = b, a+b
输出结果为:
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
总结:end可以用来给输出结果做分隔

换行符:Linux为\n,Windows为\r\n,MAC OS为\r,对于Windows来说,\r为回到行首 \t为制表符

While循环的嵌套:(04-07-1:07:00)
num1 = 0
while num1 <= 5: #外部循环
print(num1,end="_")
num2 = 0 #内部循环,全部执行完后再返回外部循环
while num2 <= 7:
print(num2,end="-")
num2 += 1
num1 += 1
print() #输出空,即换行符,等价于 print(end="\n")

练习:使用#号输出一个长方形,用户可以指定长和宽:(04-08)
程序为:
width = int(input("请输入宽度:"))
hight = int(input("请输入高度:"))

h = 1
while h <= hight:
w = 1
while w <= width:
w += 1
print("#",end="")
h += 1
print()
解题思路:利用循环的嵌套,内循环输出与输入宽度对应数量的不换行的#号,外循环输出与输入高度对应数量的行数,也就是把内部循环执行对应次数。
经过学习,代码可以优化为:(04-08-40:00)
width = int(input("请输入宽度:"))
hight = int(input("请输入高度:"))

while hight > 0: #
w = width
while w > 0:
w -= 1
print("#",end="")
hight -= 1
print()
练习:输出一个用*星号组成的三角,用户指定输出行数,再上下翻转试一试(04-09-00:00):
我第一次写的代码:
hight = int(input("请输入三角形的高度:"))
line = 1

while line <= hight:
line_temp = 1
while line_temp <= line:
print("*",end="")
line_temp += 1
print()
line += 1
解题时应先考虑输出行数,再考虑每一行的内容
倒过来:
line = int(input("请输入三角形的高度:"))

while line > 0:
line_temp = 1
while line_temp <= line:
print("*",end="")
line_temp += 1
print()
line -= 1
教程里讲的代码是:
line = int(input("请输入三角形的高度:"))

while line > 0:
line_temp = line
while line_temp > 0:
print("*",end="")
line_temp -= 1
print()
line -= 1
我的思路和老师的思路不同在于,老师是把变量进行每次减1的操作,判定小于0时终止,我是定义一个临时变量为1,给临时变量每次加1的操作,判定大于等于变量时终止。

九九乘法表:
first = 1
while first <= 9:
second = 1
while second <= first:
print(str(first)+"*"+str(second)+"="+str(first*second),end="\t")
second += 1
first += 1
print()

拓展:一行代码的九九乘法表
print('\n'.join([' '.join(['%d*%d=%-2d' % (i, j, i * j) for i in range(1, j + 1)]) for j in range(1, 10)]))

posted @ 2019-12-12 18:39  鹏程网络  阅读(148)  评论(0)    收藏  举报