6-13
def atoc(string):
leng = len(string)
if 'j' not in string:
return complex(float(string))
else:
for i in range(-1,-leng-1,-1):
if string[i] in ['+','-']:
imag = float(string[i:-1])
real = float(string[:i])
print real,imag
return complex(real,imag)
string = raw_input("your complex:")
print atoc(string)
6-14
import random
print """
there are three choices:
0--rock;
1--cloth;
2--scissors.
please choose (0, 1 or 2):
"""
choice=['rock','cloth','scissors']
dict={'scissors':['cloth','scissors','rock'],
'cloth':['rock','cloth','scissors'],
'rock':['scissors','rock','cloth']}
pe=int(raw_input("choice a number from '0,1,2':"))
pc=random.randint(-3,-1)
print "your choice:", choice[pe]
print "computer's choice:", dict[choice[pe]][pc]
print cmp(-2,pc)
import random
print """
there are three choices:
3--cloth;
2--rock;
1--scissors.
please choose (1, 2 or 3):
"""
possiresult = {'1':[2,1,3],'2':[3,2,1],'3':[1,3,2]}
result = ['lose', 'get a draw', 'win']
pe = raw_input('your choice: ')
pc = random.randint(1,3)
print "computer's choice: ", pc
print 'you', result[possiresult[pe].index(pc)]
使用字典可以有效减少 if 语句的使用。
这里给出两种算法,第一种直接规定计算机出 -2 为平,-3 玩家赢,-1 玩家输。因为玩家胜的概率为1/3,所以此法可算作
一种作弊算法,第二种是真正的符合条件的算法。
6-15
month = {0:0, 1:31, 2:28, 3:31, 4:30, 5:31,
6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}
print """
input your first date and second date like this:
2009/04/23
(year/month/day)
"""
firstdate = raw_input("your first date: ").split('/')
seconddate = raw_input("your second date: ").split('/')
startyear = int(firstdate[0]); stopyear = int(seconddate[0])
startmonth = int(firstdate[1]); stopmonth = int(seconddate[1])
startday = int(firstdate[-1]); stopday = int(seconddate[-1])
def Pastmonths(themonth, theyear):
Pm = 0
if yearjudge(theyear) == 366:
month[2] = 29
for i in range(themonth):
Pm += month[i]
return Pm
def Pastyear(startyear, stopyear):
Py = 0
for i in [0]+range(startyear, stopyear):
Py += yearjudge(i)
return Py
def yearjudge(theyear):
if theyear == 0:
return 0
else:
if (theyear % 4 == 0 and \
theyear % 100 != 0) or \
theyear % 400 == 0:
return 366
else:
return 365
def thesum(startmonth, stopmonth, startyear,
stopyear, startday, stopday):
monthssum = Pastmonths(stopmonth, stopyear) - Pastmonths(startmonth, startyear)
yearsum = Pastyear(startyear, stopyear)
daysum = stopday - startday
result = yearsum + monthssum + daysum
return result
print thesum(startmonth, stopmonth, startyear,
stopyear, startday, stopday)
此例中需要用户输入计算需要的两个日期。
6-19
seq = input("your seq: ")
lines = int(raw_input("how many lines: "))
per_line_num = len(seq)/lines
m = 0;n = per_line_num
for i in range(lines-1):
print seq[m:n]
m += per_line_num
n += per_line_num
print seq[n-per_line_num:]