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("Kilograms\t" + "Pounds\t" + "|\t" + "Pounds\t" + "Kilogorams\t")
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()

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值