趣学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
總結
以上是生活随笔為你收集整理的趣学python编程第六章答案_Python核心编程-第六章-习题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: timestamp 转换 mysql_技
- 下一篇: 软件测试mysql基础面试题_测试面试题