Python练习题 循环语句(37~54)三

Demo50
**

Python (最大数的出现)编写程序读取整数,找出它们中的最大值,然后计算它的出现次数。假设输入以数字0结束。假设你输人的是“3525550";程序找出的最大数是5,而5的出现次数是4。 (提示:维护两个变量max和count。变量max存储的是当前最大数,而count存储的是它的出现次数。初始状态下,将第一个值赋值给max,将1赋值给count。将max和每个随后的数字进行比较。如果这个数字大于max,就将它赋值给max且将count重置为1。如果这个数等于max,给count自增1。)

**

Enter a number (0: for end of input): 3
Enter a number C0: for end of input): 5
Enter a number C0: for end of input): 2
Enter a number C0: for end of input): 5
Enter a number (0: for end of input): 5
Enter a number C0: for end of input): 5
Enter a number (0: for end of input): 0
The largest number is 5
The occurrence count of the largest number is 4

程序编辑:

max = 0
count = 0
while True:
    num = int(input("Enter a number (0: for end of input): "))
    if num == 0:
        break
    if num > max:
        max = num
        count = 1
    elif num == max:
        count += 1
print("The largest number is  ",max)
print("The occurrence count of the largest number is  ",count)

测试:

J:\python\python.exe K:/python2020.8.4练习/PythonCode/day1/day03/50.py
Enter a number (0: for end of input): 3
Enter a number (0: for end of input): 5
Enter a number (0: for end of input): 2
Enter a number (0: for end of input): 5
Enter a number (0: for end of input): 5
Enter a number (0: for end of input): 5
Enter a number (0: for end of input): 0
The largest number is   5
The occurrence count of the largest number is   4

Process finished with exit code 0

Python练习题 循环语句(37~54)三_第1张图片

Demo51
**

Python (十进制到二进制)编写程序提示用户输入一个十进制整数,然后显示它对应的二进制数。

**

程序编辑:

# 方法一:
# 分别为转二进制、八进制、十六进制
# 转换的结果为字符串
# >>> bin(18)
# '0b10010'
# >>> oct(18)
# '0o22'
# >>> hex(18)
# '0x12'
Dec = int(input("请输入一个十进制数:"))
print(bin(Dec))

# 方法二:
a = int(input("请输入一个十进制整数:"))
print("{}对应二进制为{:b},八进制为{:o},"
      "十六进制为{:x}".format(a,a,a,a))

#方法三:
number = int(input("Enter a number:"))
"""
 数 / 几进制 = 商 ~ 余数   注意:当商为0时停止,倒着取余数得到二进制数
12 / 2 = 6 ~ 0
6 / 2 = 3 ~ 0
3 / 2 = 1 ~ 1
1 / 2 = 0 ~ 1
1100
"""
binStr = ""
while number != 0:
    a = number % 2
    binStr = str(a) + binStr
    number //= 2
print(binStr)

测试:

J:\python\python.exe K:/python2020.8.4练习/PythonCode/day1/day03/51.py
请输入一个十进制数:12
0b1100
请输入一个十进制整数:12
12对应二进制为1100,八进制为14,十六进制为c
Enter a number:12
1100

Process finished with exit code 0

Python练习题 循环语句(37~54)三_第2张图片

Demo52
**

Python (十进制到十六进制)编写程序提示用户输人一个十进制数,然后显示它对应的十六进制数。

**

程序编辑:

# 方法一:
# 分别为转二进制、八进制、十六进制
# 转换的结果为字符串
# >>> bin(18)
# '0b10010'
# >>> oct(18)
# '0o22'
# >>> hex(18)
# '0x12'
Dec = int(input("请输入一个十进制数:"))
print(hex(Dec))

# 方法二:
a = int(input("请输入一个十进制整数:"))
print("{}对应二进制为{:b},八进制为{:o},"
      "十六进制为{:x}".format(a,a,a,a))

# 方法三:
number = int(input("Enter a number:"))
hexStr = ""
while number != 0:
    a = number % 16
    if a < 10:
        hexStr = str(a) + hexStr
    else:
        hexStr = chr(87 + a) + hexStr
    number //= 16
print(hexStr)

测试:

J:\python\python.exe K:/python2020.8.4练习/PythonCode/day1/day03/52.py
请输入一个十进制数:13
0xd
请输入一个十进制整数:13
13对应二进制为1101,八进制为15,十六进制为d
Enter a number:13
d

Process finished with exit code 0

Python练习题 循环语句(37~54)三_第3张图片

Demo53
**

Python (蒙特卡罗模拟)一个正方形被分为四个更小的区域,如图a所示。如果你投掷一个飞镖到这个正方形一百万次,这个飞镖落在一个奇数区域里的概率是多少?编写程序模拟这个过程然后显式结果。(提示:将这个正方形的中心放在坐标系统的中心位置,如图b所示。在正方形中随机产生一个点,然后统计这个点落人奇数区域的次数。)

**
Python练习题 循环语句(37~54)三_第4张图片

程序编辑:

# 方法一:
import random
sum = 0
for i in range (0, 1000001):
    x = random.random() * random.choice([-1,1])
    y = random.random() * random.choice([-1,1])
    if x<= 0 or ( x >= 0 and y >= 0 and (y / (1 - x) >= 1)):
        sum += 1
a = sum / 1000000
print("1000000个随机点落在奇数区域的概率是%.12f"%a)

# 方法二:
import random
total = 1000000
count = 0
for i in range(0,total):
    x = random.random() * 2 - 1  # random.random()  产生[0,1)之间任意一个小数
    y = random.random() * 2 - 1  # random.random()  产生[0,1)之间任意一个小数
    if -1 <= x <= 0 and -1 <= y <= 1:
        count += 1
    elif 0 <= x <= 1 and 0 <= y <= 1 and y / (1-x) <= 1:
        count += 1
print("1000000个随机点落在奇数区域的概率是%.12f"%(count / total))

测试:

J:\python\python.exe K:/python2020.8.4练习/PythonCode/day1/day03/53.py
1000000个随机点落在奇数区域的概率是0.625219000000
1000000个随机点落在奇数区域的概率是0.625204000000

Process finished with exit code 0

Python练习题 循环语句(37~54)三_第5张图片

Demo54
**

Python (显示闰年)编写程序显示21世纪(从2001年到2100年)里所有的闰年,每行显示10个闰年。这些年被一个空格隔开。

**

程序编辑:

count = 0
for y in range(2001, 2100 + 1):
    if y % 400 == 0 or y % 4 == 0 and y % 100 != 0:
        print(y, end=" ")
        count += 1
        if count % 10 == 0:
            print()

测试:

J:\python\python.exe K:/python2020.8.4练习/PythonCode/day1/day03/54.py
2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 
2044 2048 2052 2056 2060 2064 2068 2072 2076 2080 
2084 2088 2092 2096 
Process finished with exit code 0

Python练习题 循环语句(37~54)三_第6张图片

你可能感兴趣的:(python,python)