单行注释: ”#“ 开头,类似于C语言的 ”//"
程序每行前面不能留空格,python语言代码是严格缩进的
(因为代码没有{ } 大括号,而使用:冒号,代码缩进的距离代表逻辑的作用域)
字符串必须用单引号、双引号、或三引号括起来
print('hello,world')
print("hello,world")
print('''hello,world''')
#字符串太长可以使用 \ 分开写
print('this........\
is....... \
good.....')
#输出为this.......is......good....
三双引号可以包含换行符、制表符以及其他字符。(保留原来的格式)
str = """
"""
print(str)
使用“+”可以连接字符串, string类型和char类型也可以使用 ”+“进行连接
a = "ABC"
b = "123"
a += b
print(a) #ABC123
a += a[0] #ABC123A
print(a)
使用 in ,not in 判断是否为子串,使用C++需要手写函数
a = "Hello"
b = "Python"
print("el" in a) #true
print("th" not in b) #false
int(x) : 把字符串转换成整数 , 如果x是小数,则去尾取整
float(x): 把字符串x转换成小数
str(x) : 把x转换成字符串
eval(x) 把字符串x看做一个python表达式,求其值
a = "123"
b = int(a)
c = float(a)
print(b+c)
d = str(b+c)
print(d)
print(3+eval("4.3"))
print(x,y,z) 连续输出多项,以空格分隔,然后换行(光标指向下一行)。
a = 1
b = 2
c = 3
print(a,b,c)
输出为:1 2 3
print(x,y,z, end="") 同上,但是最后不换行。
x = input(y) x是变量,y是字符串或者任何为字符串的表达式
s = input("请输入你的名字:")
print(s+",你好!")
在OpenJudge上,input参数不写任何东西
s = input() 即可
# 输入两个整数a,b,求a+b的值
a = int(input())
b = int(input())
print(a+b)
列表的项可以使任意类型的变量
empty = [] #空表
list1 = ['Google','Runoob',1997,2000]
list2 = [1,2,3,4,5]
print(list1[0]) #Google
list1[2] = 1998
print(list1[2]) #1998
print(list1) #['Google', 'Runoob', 1998, 2000]
用in判断列表是否包含某个元素(和字符串的 in 用法差不多,string本身就是一个列表)
list = [1,2,3,"4",5]
print(4 in list, 3 in list, "4" in list) #false true true
看下面一个例子 : 也是 a+b
input() 用户输入的数据,返回值默认是字符数组(类似于string), 需要自己进行转换
比如自己输入: 2 3 , "2 3"类似于一个"string",
split() 之后转换为string数组,然后进行类型转换
s = input()
nums = s.split();
print(int(nums[0]) + int(nums[1]))
当然建立很多变量,分别赋值也行
a = int(input())
b = int(input())
print("34\t\t35\n36".split())
['34', '35', '36']
x.split() 返回值是一个列表,经过 空格、制表符、换行符分隔成的列表
/ : 计算的结果都是整数,哪怕能整除也是小数
-x 相当于 0-x
有小数参与的算数表达式,结果一定是小数
** : 表示此方 a**3 = 8
// : 类似于C++的 /, python中 ,5//2 等于 2,5/2 = 2.5
也能比较字符串(按照字典序、大小写相关)
逻辑运算符 and 、or、not
什么相当于True、False?
0, "",[] 都相当于False, 0等于False
非0的数,非空的字符串和非空列表都相当于True, 1等于True
True == 1 true
False == 0 true
"" == False false
not [] true
not[1] false
逻辑运算符优先级 not > and > or
各种运算符的优先级:(总高到低)
算数运算符: + - * / // % **
关系运算符 < > == != <= >=
逻辑运算符 and or not
以下程序输出几个True
a: print( [] == False)
b : print( not [])
c: print( 0 == False)
d: print( 1 == True)
e: print( not "")
# bcde 是正确的
if语句中的语句组,每条语句左边必须缩进,且缩进情况必须一样对齐。
python中没有必要的空格会报错, python语句需要严格缩进
if 逻辑表达式1:
语句组1
else if 逻辑表达式2:
语句组2
else:
语句组3
if "ok":
print("ok")
if "": #相当于false,无输出
print("null string")
a = [4,2]
if a:
print(a)
if 20:
print(20)
if 0:
print(0)
a = int(input())
if a > 0:
if a % 2:
print("a > 0 且 a是奇数")
else:
print("a > 0 且 a 是偶数")
python中的:冒号相当于C++中的{ }大括号,条件判断语句中的小括号省略
需要用到一下格式控制符: (和C语言基本类似)
格式控制符只能出现在字符串中!
%s 表示此处要输出一个字符串
%d 表示此处要输出一个整数,(c语言中%ld 是long类型,%lld 是 long long 类型的输出)
%f 表示此处要输出一个小数,(c语言中%f 是float类型,%lf是 double类型)
%.nf 表示此处要输出一个小数,保留小数的后n位,例如%.5f, 保留小数的后5位. 四舍六入
name = "tom"
age = 18
height = 1.746
print("My age is %d." % age)
print("My name is %s, I am %.2f m tall." % (name,height))
print("%d%s" % (age,"hello"))
print("%.2f,%.2f" % (5.225,5.325))
python中的 % 相当于C++中的逗号,但还是有些不同
for i in range(5): #[0,5)
print(i)
输出为 0 1 2 3 4 (要换行),相当于C语言的
for(int i = 0; i < 5; i++){
printf("%d",i);
}
for i in range(5,9): #[5,9)
print(i)
输出为: 5 6 7 8(要换行),相当于C语言的 for(int i = 5; i < 9; i++)
for i in range(0,10,3):
print(i)
输出为 0 3 6 9 (要换行) , 相当于C语言的 for(int i = 0; i < 10; i+=3)
for i in range(0) : ---> [0,0) 无输出
for i in range(2,2) ---> [2,2) 无输出
len(a) 求列表的长度,下面的例子len(a) 等于 5
a = ['google','baidu','ibm','taobao','qq']
for i in range(len(a)):
print(i,a[i])
0 google
1 baidu
2 ibm
3 taobao
4 qq
a = ['google','baidu','ibm','taobao','qq']
for i in a:
print(i)
i 指向列表中的各项,与上边的例子不同,上面的例子,i 代表下标
这样的写法和c++中的auto写法差不多
for循环遍历字符串
for i in 'Taobao':
print(i)
类似于上面的列表, 'Taobao' 本身就是一个列表
a = ['google','baidu','ibm','taobao','qq']
for site in a:
if site == 'ibm':
print("找到了ibm跳出循环")
break # 跳出循环
else:
print("还没有找到ibm")
还没有找到ibm
还没有找到ibm
找到了ibm跳出循环
for ch in 'Taobao':
if ch == 'o': #字母o直接跳过,进入下一次循环
continue
print("当前字符",ch)
当前字符 T
当前字符 a
当前字符 b
当前字符 a
下面介绍两个函数,关于字符的
ord(x) 求字符x的编码
chr(x) 求编码为x的字符
#连续输出26个字母
#先计算出字符a的编码ord("a"),然后+i,即可得到其他字母的编码
# 然后转换为字符输出
for i in range(26):
print(chr(ord("a")+i),end="")
abcdefghijklmnopqrstuvwxyz
while 逻辑表达式exp:
语句组1
else:
语句组2
当然else后半部分可以去掉,只留while部分
count = 0
while count < 5:
print(count," < 5")
count = count+1
else:
print(count," >= 5")
1 < 5
2 < 5
3 < 5
4 < 5
5 >= 5
输出n的所有因子
n = int(input())
x = 1
while x <= n:
if n % x == 0:
print(x," ",end="")
x += 1
输入三个整数,求他们的最小公倍数
s = input().split()
x,y,z = int(s[0]),int(s[1]),int(s[2])
n = 1
while True:
if n % x == 0 and n % y == 0 and n % z == 0:
print(n)
break
n = n + 1
定义函数:
def 函数名(参数1,参数2......):
语句组
调用函数
函数名(参数1,参数2......)
看下面的例子:求最大值
def max(x,y):
if x > y:
return x
else:
return y
print(max(1,2))
输出: 2
判断是否为素数
def isPrime(n):
if n <= 1 or n % 2 == 0 and n != 2:
return False
elif n == 2:
return True
else:
for i in range(3,n,2):
if n % i == 0:
return False
if i*i > n:
break
return True
for i in range(100):
if(isPrime(i)):
print(i,end=" ")
输出: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97