当前位置: 代码迷 >> 综合 >> Python语言程序设计Y.Daniel Liang练习题Chapter5
  详细解决方案

Python语言程序设计Y.Daniel Liang练习题Chapter5

热度:69   发布时间:2023-12-01 21:26:52.0

ckp系列

ckp5.3

'''i = 1
while i < 10:if i % 2 ==0:print(i)
# 无穷次i = 1
while i < 10:if i % 2 == 0:print(i)i += 1
# 无穷次
'''
i = 1
while i < 10:if i % 2 == 0:print(i)i += 1
# 9次

ckp5.4

'''
count = 0
while count < 100:print(count)count = 0
while count < 100:print(count)count -= 1count = 0
while count < 100:
count += 1
'''

 

 

 

 

ckp5.5

number = eval(input("Enter an integer: "))
max = numberwhile number != 0:number = eval(input("Enter an integer: "))if number > max:max = numberprint("max is ", max)

ckp5.6

number = 0
sum = 0for count in range(5):number = eval(input("Enter an integer: "))sum += numberprint("sum is ", sum)
print("count is ", count)

 

 

ckp5.7

'''
yes! 每一个 while 循环都可以用 for 循环来表示。
for 循环相对于 while 循环而言更加直观,他有一个range(),所以我们知道他循环的范围。
'''

ckp5.8

i = 0
sum = 0
while i < 1002:sum += ii += 1
print(sum)

 

 

ckp5.9

sum = 0
for i in range(1, 10000):sum = sum + iif sum > 10000:sum = sum - ibreak
print(sum)
print(i)

 

 

ckp5.10

'''
count = 0
while count < n:count += 1
# n+1 次for count in range(n):print(count)
# n 次count = 5
while count < n:count += 1
# n-5 次count = 5
while count < ncount = count + 3
# round((n-5)/3+1次
'''

ckp5.12

# Prompt the user to enter two integers
n1 = eval(input("Enter first integer: "))
n2 = eval(input("Enter second integer: "))gcd = 1
k = 2while k <= round(n1 / 2) and k <= round(n2 / 2):if n1 % k == 0 and n2 % k == 0:gcd = kk += 1print("The greatest common divisor for",n1, "and", n2, "is", gcd)

 

 

ckp5.13

'''
break用于跳出一个循环体或者完全结束一个循环,不仅可以结束其所在的循环,还可结束其外层循环。
continue语句的作用是跳过本次循环体中剩下尚未执行的语句,立即进行下一次的循环条件判定,
可以理解为只是中止(跳过)本次循环,接着开始下一次循环。
'''
balance = 1000
while True:if balance < 9:breakbalance = balance - 9print("Balance is ", balance) # output = 1balance = 1000
while True:if balance < 9:continuebalance = balance - 9print("Balance is ", balance) #不会终止

 

 

ckp5.14

sum = 0
i = 0
while i < 3:i += 1if i % 3 == 0:continuesum += i
print(sum)
'''
sum = 0
for i in range(4):if i % 3 == 0:continuesum += i
print(sum)
'''

 

 

ckp5.15

#listings 5.11
sum = 0
number = 0
i = 0
while i < 20:number += 1i += 1sum += numberif sum >= 100:i = 20
print("The number is", number)
print("The sum is", sum)#listings 5.12
sum = 0
number = 0
while number < 20:number += 1sum += numbersum = sum - 10 - 11
print("The sum is", sum)

 

 

 

ckp5.16

for i in range(1, 4):for j in range(1, 4):if i * j > 2:breakprint(i * j)print(i)print()for i in range(1, 4):for j in range(1, 4):if i * j > 2:continueprint(i * j)print(i)


 

list系列

list5.2

import random# Generate a random number to be guessed
number = random.randint(0, 100)print("Guess a magic number between 0 and 100")# Prompt the user to guess the number
guess = eval(input("Enter your guess: "))if guess == number:print("Yes, the number is", number)
elif guess > number:print("Your guess is too high")
else:print("Your guess is too low")

 

 

list5.4

import random
import timecorrectCount = 0# Count the number of correct answers
count = 0# Count the number of questions
NUMBER_OF_QUESTIONS = 5# ConstantstartTime = time.time() # Get start timewhile count < NUMBER_OF_QUESTIONS:# Generate two random single-digit integersnumber1 = random.randint(0, 9)number2 = random.randint(0, 9)# If number1 < number2, swap number1 with number2if number1 < number2:number1, number2 = number2, number1answer = eval(input("What is " + str(number1) + " - " +str(number2) + "? "))if number1 - number2 == answer:print("You are correct!")correctCount +=1else:print("Your answer is wrong.\n", number1, "-",number2, "is", number1 - number2)count += 1endTime = time.time() # Get end time
testTime = int(endTime - startTime) # Get test time
print("Correct count is", correctCount, "out of",NUMBER_OF_QUESTIONS, "\nTest time is", testTime, "seconds")

 

 

list5.6

print("          Multiplication Table")
# Display the number title
print(" |", end = '')
for j in range(1, 10):print(" ", j, end = '')
print() # Jump to the new line
print("——————————————————————————————————————————")# Display table body
for i in range(1, 10):print(i, "|", end = '')for j in range(1, 10):print(format(i * j, "4d"), end = '')print() # Jump to the new line

 

 

list5.14

import turtle
from random import randintturtle.speed(1) # Set turtle speed to slowest# Draw 16-by-16 lattice
turtle.color("gray") # Color for lattice
x = -80
for y in range(-80, 80 + 1, 10):turtle.penup()turtle.goto(x, y) # Draw a horizontal lineturtle.pendown()turtle.forward(160)y = 80
turtle.right(90)
for x in range(-80, 80 + 1, 10):turtle.penup()turtle.goto(x, y) # Draw a vertical lineturtle.pendown()turtle.forward(160)turtle.pensize(3)
turtle.color("red")turtle.penup()
turtle.goto(0, 0) # Go to the center
turtle.pendown()x = y = 0 # Current pen location at the center of lattice
while abs(x) < 80 and abs(y) < 80:r = randint(0, 3)if r ==0:x += 10 # Walk rightturtle.setheading(0)turtle.forward(10)elif r == 1:y -= 10 # Walk downturtle.setheading(270)turtle.forward(10)elif r == 2:x -= 10 # Walk leftturtle.setheading(180)turtle.forward(10)elif r == 3:y += 10 # Walk upturtle.setheading(90)turtle.forward(10)turtle.done()

 

 


sec系列

sec5.3

print("Kilograms   " + "   Pounds")
for i in range(1, 200, 2):j = 2.2 * i#print(format(j, ".1f").rjust(20))print(str(i).ljust(5), format(j, ".1f").rjust(15))'''ljust and rjust use in str, ljust左对齐,rjust右对齐'''

  

 

sec5.5

print("Kilograms\t" + "Pounds\t" + "|\t" + "Pounds\t" + "Kilogorams\t")
p = 0
for i in range(1, 200, 2):j = 2.2 * i# 给第二组数据准备p += 1m = 15 + p * 5n = m * 0.45print(str(i).ljust(5), format(j, ".1f").rjust(15),"\t", m, "\t", format(n, ".2f").rjust(8))

 

 

sec5.16

# Prompt the user to enter two integers
n1 = eval(input("Enter first integer: "))
n2 = eval(input("Enter second integer: "))d = min(n1, n2)
gcd = dfor i in range(d + 1, 1, -1):if n1 % i == 0 and n2 % i == 0:gcd = ibreakprint("The greatest common divisor for",n1, "and", n2, "is", gcd)
'''
while k <= n1 and k <= n2:if n1 % k == 0 and n2 % k == 0:gcd = kk += 1
'''

 

 

sec5.19

这个金字塔我想了很多的办法,什么居中显示,靠右靠左都试过(ljust,rjust,format等),靠右的时候在10以内显示都很成果,但是10往后就出来金字塔了,歪歪扭扭的,我不满意。于是我想了一种很笨的办法,用 \t 的方式来表示,虽然很笨,但是效果却很好,如果你们有很好的方法请务必告诉我,在此多蟹!!!

附上邮箱:jhtfine@qq.com

n = eval(input("Enter the number of lines: "))
for i in range(1, n + 1):a = "\t"for k in range(i, n + 1):a = "\t" + afor j in range(1, i + 1):a += (str(i - j + 1) + "\t") # 从大到小for j in range(2, i + 1):a += (str(j) + "\t") # 从小到大print(a)

 

 

sec5.20

print("Pattern A")
for i in range(7):a = "\t"for j in range(1, i + 1):a = a + str(j) + "\t"print(a)print("Pattern B")
for i in range(6, 0, -1):a = "\t"for j in range(1, i + 1):a = a + str(j) + "\t"print(a)print("Pattern C")
for i in range(7):a = "\t"for k in range(i, 6):a = a + "\t"for j in range(i, 0, -1):a = a + str(j) + "\t"print(a)print("Pattern D")
for i in range(6, 0, -1):a = "\t"for k in range(i, 6):a = a + "\t"for j in range(1, i + 1):a = a + str(j) + "\t"print(a)

 

 

 

sec5.47

import turtle
import randomturtle.pensize(3)
turtle.hideturtle()turtle.penup()
turtle.goto(-60, 50)
turtle.pendown()
turtle.goto(60, 50)
turtle.goto(60, -50)
turtle.goto(-60, -50)
turtle.goto(-60, 50)
#turtle.done()turtle.pensize(5)
turtle.pencolor("red")
for i in range(11):turtle.penup()x = random.randint(-60, 60)y = random.randint(-50, 50)turtle.goto(x, y)turtle.pendown()turtle.goto(x, y)
turtle.done()

 

 

sec5.55

这道棋盘题也稍有难度,我用的方法也很笨,用了两个很长的 for 语句,我总觉得有更好的办法,但是碍于我能力和时间有限,只能做到这种程度了,望见谅!!!

import turtle
from random import randintturtle.speed(20)
turtle.color("gray")
x = -80
for y in range(-80, 80 + 1, 20):turtle.penup()turtle.goto(x, y) # Draw a horizontal lineturtle.pendown()turtle.forward(160)y = 80
turtle.right(90)
for x in range(-80, 80 + 1, 20):turtle.penup()turtle.goto(x, y) # Draw a vertical lineturtle.pendown()turtle.forward(160)for x in range(-80, 40 + 1, 40):for y in range(-60, 60 + 1, 40):turtle.penup()turtle.goto(x, y)turtle.pendown()turtle.begin_fill()turtle.color("black")turtle.forward(20)turtle.left(90)turtle.forward(20)turtle.left(90)turtle.forward(20)turtle.left(90)turtle.forward(20)turtle.left(90)turtle.end_fill()for x in range(-60, 60 + 1, 40):for y in range(-40, 80 + 1, 40):turtle.penup()turtle.goto(x, y)turtle.pendown()turtle.begin_fill()turtle.color("black")turtle.forward(20)turtle.left(90)turtle.forward(20)turtle.left(90)turtle.forward(20)turtle.left(90)turtle.forward(20)turtle.left(90)turtle.end_fill()turtle.hideturtle()
turtle.done()