趣学python编程第六章答案_Python核心编程-第六章-习题

有。in操作符;find()方法和count()方法和index()均能实现

import string

import keyword

alphas = string.letters + '_'

nums = string.digits

print "Welcome to the Identifier Checker v1.0"

while True:

myInput = raw_input("Identifier to test? ")

if len(myInput) 

if myInput in alphas:

print "Okay as an identifier"

else:

print '''invalid: first symbol must be

alphabetic'''

elif len(myInput) >= 2:

if myInput in keyword.kwlist:

print 'invalid: cannot be keywords!'

elif myInput[0] not in alphas:

print '''invalid: first symbol must be

alphabetic'''

else:

for otherChar in myInput[1:]:

if otherChar not in alphas + nums:

print '''invalid: remaining

symbol must be alphabetic'''

break

else:

print "Okay as an identifier"

3.

a.

# -*- coding:utf-8 -*-

import random

print u"请根据提示输入数字"

num_list = []

for i in range(random.randrange(2,11)):

num = int(raw_input(u'请输入一个数字'.encode('gbk')).strip())

num_list.append(num)

i = 0

while i <= len(num_list) - 2:

for j in range(i,len(num_list)):

if num_list[i] 

num_list[i], num_list[j] = num_list[j], num_list[i]

i += 1

print num_list

b.

# -*- coding:utf-8 -*-

import random

print u"请根据提示输入数字"

num_list = []

for i in range(random.randrange(2,11)):

num = int(raw_input(u'请输入一个数字'.encode('gbk')).strip())

num_list.append(num)

num_list.sort(reverse=True)

print num_list

4.

# -*- coding:utf-8 -*-

from __future__ import division

stu_num = int(raw_input(u"请输入学生个数:".encode('gbk')))

score = []

print u"请依次输入每个学生的分数,Q结束输入"

for i in range(stu_num):

try:

per_score = int(raw_input(u"请输入学生的得分".encode('gbk')))

score.append(per_score)

except ValueError:

break

for k, j in enumerate(score):

if 90 <= j <= 100:

print u'第 %d 个学生, 你的分数是 %d, 评分是 "A"' % (k+1, j)

elif 80 <= j <= 89:

print u'第 %d 个学生, 你的分数是 %d, 评分是 "B"' % (k+1, j)

elif 70 <= j <= 79:

print u'第 %d 个学生, 你的分数是 %d, 评分是 "C"' % (k+1, j)

elif 60 <= j <= 69:

print u'第 %d 个学生, 你的分数是 %d, 评分是 "D"' % (k+1, j)

else:

print u'第 %d 个学生, 你的分数是 %d, 评分是 "E"' % (k+1, j)

average = sum(score) / stu_num

print u"所有学生的平均分是: %.2f" % average

5.

a.

strings = raw_input("Please enter something:")

print strings[0], strings[1]

for i, j in enumerate(strings):

if 1 <= i <= len(strings) - 2:

print strings[i - 1], j, strings[i + 1]

print strings[-2], strings[-1]

b.

# -*- coding:utf-8 -*-

str1 = raw_input(u"请输入第一个字符串".encode('gbk'))

str2 = raw_input(u"请输入第一个字符串".encode('gbk'))

if len(str1) != len(str2):

print u"两个字符串不一致!!"

else:

for i in range(len(str1)):

if str1[i] != str2[i]:

print u"两个字符串不一致!!"

break

else:

print u"两个字符串完全一致!!"

c.

# -*- coding:utf-8 -*-

def if_palindrome(s):

if len(s) % 2:

print u'输入的字符串不是回文!'

else:

if s[:len(s)/2] == s[-1:len(s)/2-1:-1]:

print u"输入的字符串是回文!"

else:

print u"输入的字符串不是回文!"

a_string = raw_input(u"请输入一个字符串".encode('gbk'))

if_palindrome(a_string)

d.

# -*- coding:utf-8 -*-

def make_palindrome():

a_string = raw_input(u"请输入一个字符串: ".encode('gbk'))

print "BEFORE Palindrome: ", a_string

new_string = ''.join((a_string, a_string[::-1]))

print "AFTER Palindrome: ", new_string

make_palindrome()

6.

# -*- coding:utf-8 -*-

def str_strip(s):

s_strip = s

if s.startswith(' '):

i = 0

while i 

if not s[i].isspace():

s_strip = s[i:]

break

i = i + 1

if s_strip.endswith(' '):

j = -1

while j >= -len(s_strip):

if not s_strip[j].isspace():

s_strip = s_strip[:j+1]

break

j = j - 1

return s_strip

a_string = raw_input(u'请输入一个字符串:'.encode('gbk'))

print str_strip(a_string)

7.

#! /usr/bin/env python

# -*- coding:utf-8 -*-

# 接收用户输入一个数字

num_str = raw_input('Enter a number: ')

#把用户的输入转换成数字格式

num_num = int(num_str)

#生成一个从1到用户输入的数字的列表

fac_list = range(1, num_num+1)

print "BEFORE:", fac_list

#定义i

i = 0

#while循环实现删去能被用户输入的数字整除的项

while i 

#检验是否能被整除

if num_num % fac_list[i] == 0:

del fac_list[i]

i -= 1

#对i自加1,检验下一项

i = i + 1

#打印出最终结果

print "AFTER:", fac_list

8.

a.

# -*- coding:utf-8 -*-

while True:

num_str = raw_input(u'请输入一个整数:'.encode('gbk'))

if num_str.isdigit():

break

else:

print u"请输入一个整数"

num_list = list(num_str)

eng_name_list = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']

for i, j in enumerate(num_list):

num_list[i] = eng_name_list[int(j)]

print '-'.join(num_list)

b.

# -*- coding:utf-8 -*-

while True:

num_str = raw_input(u'请输入一个整数:'.encode('gbk'))

if num_str.isdigit():

break

else:

print u"请输入一个整数"

unit_list = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']

ten_list = ['ten', 'eleven', 'twelve',  'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']

decade_list = ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']

hun = 'hundred'

def single_figure(s):

return unit_list[int(s)]

def double_figures(s):

num_list = list(s)

num_num = int(s)

if num_num in range(10, 20):

return ten_list[num_num-10]

elif int(num_list[1]) == 0:

return ''.join(decade_list[int(num_list[0])-2])

else:

num_list[0] = decade_list[int(num_list[0])-2]

num_list[1] = unit_list[int(num_list[-1])]

return '-'.join(num_list)

def three_figures(s):

num_list = list(s)

num_num = int(s)

num_list[0] = ' '.join((unit_list[int(num_list[0])], hun, 'and'))

if int(num_list[1]) != 0:

num_list[1:] = [double_figures(s[1:])]

return ' '.join(num_list)

elif int(num_list[1]) == 0 and int(num_list[-1]) != 0:

num_list[1:] = single_figure(s[2])

return ' '.join(num_list)

else:

return ' '.join((unit_list[int(s[0])], hun))

if len(num_str) == 1:

print single_figure(num_str)

elif len(num_str) == 2:

print double_figures(num_str)

elif len(num_str) == 3:

print three_figures(num_str)

else:

print u"输入的数字必须在0-1000之间!"

9.

# -*- coding:utf-8 -*-

time = raw_input(u"请输入要转换的分钟数".encode('gbk'))

result = list(divmod(int(time), 60))

print u"%d分钟等于%d小时加%d分钟。" %(int(time), result[0], result[1])

10.

# -*- coding:utf-8 -*-

while True:

a_string = raw_input(u'请输入要转换的英文字符串,退出输入Q: '.encode('gbk'))

new_string = []

if a_string.lower() == 'q':

break

for i in a_string:

if i.islower():

new_string.append(i.upper())

elif i.isupper():

new_string.append(i.lower())

else:

new_string.append(i)

new_string = ''.join(new_string)

print u"转换前的字符串是:", a_string

print u"转换后的字符串是:", new_string

11.

a.

# -*- coding:utf-8 -*-

address = []

for i in range(4):

per_address = raw_input(u'请依次输入四段IP地址,每段地址是0-255之间的整数:'.encode('gbk'))

address.append(per_address)

print u'您输入的IP地址是:%s' % '.'.join(address)

b.

# -*- coding:utf-8 -*-

import sys

address = []

for i in range(4):

per_address = raw_input(u'请依次输入四段IP地址,每段地址是0-255之间的整数:'.encode('gbk'))

address.append(per_address)

print u'您输入的IP地址是:%s' % '.'.join(address)

next = raw_input(u"接下来将进行逆转换,继续请回车,否则请输入Q退出".encode('gbk'))

if next.lower() == 'q':

sys.exit()

num = ['一', '二', '三', '四']

for i in address:

print u'转换后的四段分是:%s' % i

12.

a.

# -*- coding:utf-8 -*-

def findchr(string, char):

if char not in string:

return -1

else:

i = 0

while i 

if string[i] == char:

return i

break

i += 1

b.

# -*- coding:utf-8 -*-

def rfindchr(string, char):

if char not in string:

return -1

else:

i = -1

while i >= -len(string):

if string[i] == char:

return i + len(string)

break

i -= 1

c.

# -*- coding:utf-8 -*-

def subchr(string, origchar, newchar):

if origchar not in string:

return u"未找到!"

else:

i = 0

while i 

if string[i] == origchar:

return ''.join((string[:i], newchar, string[i+1:]))

break

i += 1

13.

# -*- coding:utf-8 -*-

def atoc(s):

error = 'ValueError: atoc() areg is a malformed string'

if '+' in s:

if s[-1] != 'j' or s.count('j') >= 2:

return error

else:

com = s.split('+')

real = float(com[0])

imag = float(com[1][:-1])

return complex(real, imag)

else:

if s.count('j') == 1:

real = 0

imag = float(s[:-1])

return complex(real, imag)

elif s.count('j') >= 2:

return error

else:

try:

real = float(s[:])

imag = 0

return complex(real, imag)

except ValueError:

return error

14.

# -*- coding:utf-8 -*-

import random

print u'欢迎来到石头剪刀布!'

choice_list = [u'石头', u'剪刀', u'布']

result = []

for i in choice_list:

for j in choice_list:

result.append((i, j))

15.

a.

# -*- coding:utf-8 -*-

from datetime import datetime

print u'这是一个计算两个日期之间天数的小程序'

print u'日期的格式是MM/DD/YY'

while True:

date1 = raw_input(u'请输入第一个日期'.encode('gbk'))

date2 = raw_input(u'请输入第二个日期'.encode('gbk'))

date_format = '%m/%d/%Y'

date1 = datetime.strptime(date1, date_format)

date2 = datetime.strptime(date2, date_format)

#date1_mm, date1_dd, date1_yy = [int(i) for i in date1.split('/')]

#date2_mm, date2_dd, date2_yy = [int(i) for i in date2.split('/')]

delta = date2 - date1

print u'两个日期之间相差%d天!' % delta.days

b.

# -*- coding:utf-8 -*-

import datetime

import time

print u'这是一个计算出生至今共有多少天的小程序'

print u'输入的出生日期的格式是MM/DD/YY'

while True:

Birthday = raw_input(u'请输入您的出生日期'.encode('gbk'))

date_format = '%m/%d/%Y'

today = datetime.datetime.strptime(time.strftime('%m/%d/%Y'), date_format)

Birthday = datetime.datetime.strptime(Birthday, date_format)

delta = today - Birthday

print u'WOW!你出生已经%d天了!' % delta.days

c.

# -*- coding:utf-8 -*-

import datetime

import time

print u'这是一个计算下次生日距今天的天数的小程序'

print u'输入的出生日期的格式是MM/DD/YY'

while True:

Birthday = raw_input(u'请输入您的出生日期'.encode('gbk'))

date_format = '%m/%d/%Y'

today = datetime.datetime.strptime(time.strftime('%m/%d/%Y'), date_format)

Birthday = Birthday.split('/')

if '-'.join((Birthday[0], Birthday[1])) > datetime.datetime.now().strftime('%m-%d'):

Birthday[2] = datetime.datetime.now().strftime("%Y")

else:

Birthday[2] = str(int(datetime.datetime.now().strftime("%Y"))+1)

Birthday = '/'.join(Birthday)

Birthday = datetime.datetime.strptime(Birthday, date_format)

delta = Birthday - today

print u'WOW!你的下次生日距今还有%d天!' % delta.days

17.

# -*- coding:utf-8 -*-

def myPop(Alist):

to_pop = Alist[-1]

del Alist[-1]

return to_pop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值