栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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 -= 1


count = 0
while count < 100:
count += 1
'''

 

 

 

 

ckp5.5
number = eval(input("Enter an integer: "))
max = number

while number != 0:
    number = eval(input("Enter an integer: "))
    if number > max:
        max = number

print("max is ", max)

ckp5.6
number = 0
sum = 0

for count in range(5):
    number = eval(input("Enter an integer: "))
    sum += number

print("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 += i
    i += 1
print(sum)

 

 

ckp5.9
sum = 0
for i in range(1, 10000):
    sum = sum + i
    if sum > 10000:
        sum = sum - i
        break
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 < n
    count = 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 = 2

while k <= round(n1 / 2) and k <= round(n2 / 2):
    if n1 % k == 0 and n2 % k == 0:
        gcd = k
    k += 1

print("The greatest common divisor for",
      n1, "and", n2, "is", gcd)

 

 

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

print("Balance is ", balance) # output = 1


balance = 1000
while True:
    if balance < 9:
        continue
    balance = balance - 9

print("Balance is ", balance) #不会终止

 

 

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

 

 

ckp5.15
#listings 5.11
sum = 0
number = 0
i = 0
while i < 20:
    number += 1
    i += 1
    sum += number
    if 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 += 1
    sum += number

sum = 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:
            break
        print(i * j)
    print(i)

print()

for i in range(1, 4):
    for j in range(1, 4):
        if i * j > 2:
            continue
        print(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 time

correctCount = 0# Count the number of correct answers
count = 0# Count the number of questions
NUMBER_OF_QUESTIONS = 5# Constant

startTime = time.time() # Get start time

while count < NUMBER_OF_QUESTIONS:
    # Generate two random single-digit integers
    number1 = random.randint(0, 9)
    number2 = random.randint(0, 9)
    # If number1 < number2, swap number1 with number2
    if number1 < number2:
        number1, number2 = number2, number1



    answer = eval(input("What is " + str(number1) + " - " +
                        str(number2) + "? "))


    if number1 - number2 == answer:
        print("You are correct!")
        correctCount +=1
    else:
        print("Your answer is wrong.n", number1, "-",
              number2, "is", number1 - number2)


    count += 1


endTime = 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 randint

turtle.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 line
    turtle.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 line
    turtle.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 right
        turtle.setheading(0)
        turtle.forward(10)
    elif r == 1:
        y -= 10 # Walk down
        turtle.setheading(270)
        turtle.forward(10)
    elif r == 2:
        x -= 10 # Walk left
        turtle.setheading(180)
        turtle.forward(10)
    elif r == 3:
        y += 10 # Walk up
        turtle.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("Kilogramst" + "Poundst" + "|t" + "Poundst" + "Kilogoramst")
p = 0
for i in range(1, 200, 2):
    j = 2.2 * i
    # 给第二组数据准备
    p += 1
    m = 15 + p * 5
    n = m * 0.45

    print(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 = d

for i in range(d + 1, 1, -1):
    if n1 % i == 0 and n2 % i == 0:
        gcd = i
        break

print("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 = k
    k += 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" + a
    for 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 random

turtle.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 randint

turtle.speed(20)
turtle.color("gray")
x = -80
for y in range(-80, 80 + 1, 20):
    turtle.penup()
    turtle.goto(x, y) # Draw a horizontal line
    turtle.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 line
    turtle.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()

 


 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号