习题在百度文库的链接如下:https://wenku.baidu.com/view/e6b8c88ecc175527072208d7.html?re=view
在IDLE中Alt+p返回上一行
001
>>> print("I love yzw \n"*8)
I love yzw
I love yzw
I love yzw
I love yzw
I love yzw
I love yzw
I love yzw
I love yzw
>>> print("I love yzw \n"+8)
Traceback (most recent call last):
File "
TypeError: Can't convert 'int' object to str implicitly
为什么用*是对的,用+是错的?
原因是python不允许完全不同的东西相加...它认为这种相加是无意义的。这和c++,java的可以转换形式再相加不同
>>> print("你好"+"少年") #字符串链接
你好少年
关于在命令行中直接输入和用print打印的区别
>>> 5+8
13
>>> print(5+8)
13
>>> "I love yzw"
'I love yzw'
>>> print("I love yzw")
I love yzw
直接输入会显示类型和字符串
print只显示字符串
002.;
003.
命名规则:字母,数字,下划线,但是不能以数字开头(和C++命名规则相同)
python区分大小写(和C++相同)
>>> str='d:\Python\003'
>>> print(str)
d:\Python #必须在\前加转义字符\才行
>>> str=r'd:\Python\003' #这个r会自动为\添加转义字符,这在文件路径特别长的时候非常有效
>>> print(str)
d:\Python\003
竟然有这样的写法
str=("我爱鱼C"
"正如我爱小于"
"他那声音"
"久久不肯散去") #括号里面的字符串会自动连接成为一个字符串
print(str)
这样写相当于三引号
str=("我爱鱼C \n"
"正如我爱小于\n"
"他那声音\n"
"久久不肯散去\n")
print(str)
004.
逻辑运算符:
and 相当于C++的&&
or 相当于C++的||
not 相当于C++的!(非)
while 'c':
print("我爱yzw")
#这会打印无数次...因为‘c’的值为True
>>> not'c'
False
>>> not 0 #0表示False
True
总的来说,在Python中
0
‘’ #表示空字符
None
都表示False,其他为True
005.
3.14e10 #e相当于乘10
>>> 3.14e10
31400000000.0
True用于计算时,相当于1
False用于计算时,相当于0
>>> True+True
2
>>> True+False
1
>>> True*True
1
>>> True*False
0
>>> True/False
报错因为0不能做分母
>>> False/True
0.0
Python中的类型:整型(int),浮点型(float),字符串(str),布尔型(bool)
类型转换:
>>> a='123'
>>> b=int(a)
>>> b
123 #注意这里没有''说明它是一个整型
>>> b=int('yzw')
#报错,因为python里只能把只包含数字的字符串转化为整型,包含字母之类乱七八糟的通通不行
>>> a=int(3.14)
>>> a
3
#这里和C++一样,会舍去小数部分
关于float()类型转换
>>> a='3.14'
>>> b=float(a)
>>> b
3.14
>>> a='3'
>>> b=float(a)
>>> b
3.0
>>> a=3
>>> b=float(a)
>>> b
3.0
关于str() #注意str是关键字
>>> a=3.14
>>> b=str(a)
>>> b
'3.14'
type()函数 #用于判断类型
>>> a=3
>>> type(a)
>>> b=3.14
>>> type(b)
>>> c='haha'
>>> type(c)
>>> d='i'
>>> type(d)
>>> e=True
>>> type(e)
instance() #判断前面的元素和后面的类型关键字是匹配,即判断类型是否相同,但是第二个参数一定是类型关键字
instance
n 要求
>>> isinstance('3.14',str)
True
>>> isinstance(3,int)
True
>>> isinstance(3,float)
False
>>> isinstance(True,bool)
True
一些函数
为字符串
s.isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False。
s.isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False。
s.isdigit() 所有字符都是数字,为真返回 Ture,否则返回 False。
s.islower() 所有字符都是小写,为真返回 Ture,否则返回 False。
s.isupper() 所有字符都是大写,为真返回 Ture,否则返回 False。
s.istitle() 所有单词都是首字母大写,为真返回 Ture,否则返回 False。
s.isspace() 所有字符都是空白字符,为真返回 Ture,否则返回 False。
006.
// (结果为整数的除法,即舍掉小数)
>>> 5/3
1.6666666666666667 #注意这和C++不同
关于结果为整数的除法:#用//
>>> 5//3
1
>>> 5.0//3
1.0
**(幂运算符)
>>> 2**2
4
>>> 2**3
8
>>> 2**4
16
-3表示负3
>>> 1<10<100 !!竟有这种操作 相当于 10>1 and 10<100
True
>>> 1<0<10
False
爱因斯坦曾出过这样一道有趣的数学题:
有一个长阶梯,若每步上2阶,最后剩1阶;
若每步上3阶,最后剩2阶;
若每步上5阶,最后剩4阶;
若每步上6阶,最后剩5阶;
只有每步上7阶,最后刚好一阶也不剩。
源代码:
i=7
haha=0
while haha==0:
if(i%2==1 and i%3==2 and i%5==4 and i%6==5):
haha=1
else:
i=i+7
print(i)
007.
008.
a=input("请输入分数")
a=int(a)
grade=''
if(a>=90):
grade='A'
#elif(a>=80 and a<90):
elif(80<=a<90): !!!!和数学的写法相同,可用小于号连接
grade='B'
elif(80>a>=60): !!!!和数学的写法相同,也可以用大于号连接
grade='C'
else:
grade='D'
print(grade)
D:\Python>py 008.py
请输入分数62
C
D:\Python>py 008.py
请输入分数82
B
>>> x,y=1,2
>>> x
1
>>> y
2
三元操作符(这里是对C++中?: 的改写,但意思一样)
>>> a=1
>>> b=2
>>> small= a if a >>> small
1
>>> b=4
>>> a=5
>>> small=a if a >>> small
4
assert()
如果assert(为False)
程序会崩溃
如果assert(为True)则会自动把这句忽略过去
>>> assert(4<4)
Traceback (most recent call last):
File "
assert(4<4)
AssertionError
>>> assert(4<5)
>>> (即:程序会跳过这里继续进行)
x=1 y=2 z=3如何快速交换x,y,z?
>>> x,y,z=1,2,3
>>> x
1
>>> y
2
>>> z
3
>>> x,y,z=y,z,x
>>> x
2
>>> y
3
>>> z
1
有了这个思路也可以交换两个数的值
>>> a,b=1,2
>>> a,b=b,a
>>> a
2
>>> b
1
成员资格运算符:in
用于检查一个元素是否在集合中,如果在返回True,如果不在返回False
>>> a="我是蒟蒻"
>>> b="蒟蒻"
>>> b in a
True
>>> b="我"
>>> b in a
True
009.
for循环
j="abcdefg"
for i in j:
print(i,end=" ") #我终于知道怎么能不换行的有间隔的输出多个元素了
D:\Python>py 009.py
a b c d e f g
j="abcdefg"
for i in j:
print(i,end=" ")#第二个参数控制了间隔
D:\Python>py 009.py
a b c d e f g
len(参数) 计算参数的长度
a=["你是谁?","我是:","蒟蒻"] #这里a是一个列表,注意[]
for i in a :
print(i,len(i))
D:\Python>py 009.py
你是谁? 4
我是: 3
蒟蒻 2
range生成一个列表
a=range(1,5)
print(a)
D:\Python>py 009.py
range(1, 5) #可见这样是没办法输出整个列表的
a=list(range(1,5)) #类型转换
print(a)
D:\Python>py 009.py
[1, 2, 3, 4]
for i in range(1,5):
print(i)
D:\Python>py 009.py
1
2
3
4
for i in range(5): #只有一个参数时,从零开始
print(i)
D:\Python>py 009.py
0
1
2
3
4
break,continue的用法和c++相同
010.
列表:打了激素的数组
python没有数组,但有列表,它可以放进任何类型的数据(和C++必须放相同类型的数据不同,因为python变量没有类型)
>>> jr=[1,'a',"hahaha"]
>>> jr
[1, 'a', 'hahaha']
甚至列表中的元素也可以是列表
>>> jr=[['hi','juruo'],'你好蒟蒻',1]
>>> jr
[['hi', 'juruo'], '你好蒟蒻', 1]
可以创建一个空列表
>>> jr=[]
>>> jr
[]
append()向列表中添加元素
>>> jr=[]
>>> jr
[]
>>> jr.append("SB")
>>> jr
['SB']
>>> len(jr)
1
>>> jr.append("蒟蒻")
>>> jr
['SB', '蒟蒻']
>>> len(jr)
2
extend:向列表中加入另列表的所有元素
>>> jr
['SB', '蒟蒻']
>>> jr.extend([1,2,3])
>>> jr
['SB', '蒟蒻', 1, 2, 3]
列表和数组一样,序号是从0开始的
insert()在制定位置插入元素
>>> jr.insert(0,'sb') #第一个参数是位置,第二个参数是元素的值
>>> jr
['sb', 'SB', '蒟蒻', 1, 2, 3]