数据类型
字符串(str)
整数(int)
浮点数(float):有精度损失
布尔数(bool)
复数(complex)1+1j
type(‘小明’)——<type 'str'>
算术运算
%求余
**指数
math模块: import math dir(math)
关系运算
== !=
逻辑运算
and or not
and: 如果所有值都为真,那么 and 返回最后一个值。
如果某个值为假,则 and 返回第一个假值。
123 and 456:456
or: 如果有一个值为真,or 立刻返回该值。
如果所有的值都为假,or 返回最后一个假值。
123 or 456:123
2**2**3 = 256
count += 1
输入输出
raw_input("提示符") 默认为字符串类型
print()
print('hello\nworld!')
print("{:.1f}".format())
print('{0} {1} {0}'.format('la','ba')) # 打乱顺序
la ba la
print('{:10s} and {:>10s}'.format('腊八','lb'))
# 取10位左对齐,取10位右对齐
腊八 and lb
print('{0} is {0:>10.2f}'.format(1.123))
# 取2位小数,右对齐,取10位
1.123 is 1.12
选择结构
if -else elif
循环结构
while
break 结束当前循环体
continue 结束当次循环
for i in range(11):
range(start,stop,step) 生成等差数列
math.factorial(阶乘)
abs() < 1e-4
函数
def 函数名 (参数)
return
global x (函数内部定义全局变量)
递归函数
def p(n):
if n==0 or n==1:
return 1
else:
return n*p(n-1)
print (p(3))
斐波那契数列
def fib(n):
if n==1 or n==2:
return 1
else:
return fib(n-1)+fib(n-2)
print(fib(5))
汉诺塔问题
将前n-1个盘子,通过C,从A移动到B
将第n个盘子从A移动到C
将前n-1个盘子,通过A,从B移动到C
def hanoi(n,A,B,C):
if n==1:
print("Move",n,"from",A,"to",C)
else:
hanoi(n-1,A,C,B)
print("Move",n,"from",A,"to",C)
hanoi(n-1,B,A,C)
n=int(input("输入一个整数"))
hanoi(n,'left','mid','right')
随机停车
import random
def parking(low,high):
if(high-low<1):
return 0
else:
x=random.uniform(low,high-1)
return parking(low,x)+1+parking(x+1,high)
print(parking(0,5))
两道做了很久很久的题
题目内容:
根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?
a) 1900.1.1是星期一
b) 1月,3月,5月,7月,8月,10月和12月是31天
c) 4月,6月,9月和11月是30天
d) 2月是28天,在闰年是29天
e) 公元年数能被4整除且又不能被100整除是闰年
f) 能直接被400整除也是闰年
def run(year):
if (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0):
return 1
return 0
def monthday(year,month):
if month in [1,3,5,7,8,10,12]:
return 31
elif month in [4,6,9,11]:
return 30
elif (run(year)==0):
return 28
else:
return 29
day=0
count=0
for year in range(1901,2001):
for month in range(1,13):
day+=monthday(year,month)
# print(monthday(year,month),end=" ")
if ((day+2)%7==0):
# print (day,year)
count+=1
print(count)
题目内容:
数字197可以被称为循环素数,因为197的三个数位循环移位后的数字:197,971,719均为素数。100以内这样的数字包括13个,2,3,5,7,11,13,17,31,37,71,73,79,97。要求任意正整数n以内一共有多少个这样的循环素数。
import math
def su(x):
if x==1 or x==0:
return 0
else:
for i in range(2,int(math.sqrt(x))+1):
if x%i==0:
return 0
return 1
def judge(x):
s=str(x)
for i in s:
if i in ['0','2','4','6','8']:
return 0
ms=" "
for i in range(len(s)):
ms+=s[i]
if i==len(s)-1:
for j in range(i):
ms+=s[j]
else:
k=i+1
for j in range(len(s)-1):
if k>=len(s):
k=0
ms+=s[k]
k+=1
if su(int(ms))==0:
return 0
ms=" "
return 1
x=int(input())
count=0
for i in range(1,x):
if i<=10:
if su(i)==1:
count+=1
else:
if su(i)==1:
if judge(i):
count+=1
print(count)