Python二进制加法,循环不工作

2024-06-17 11:31:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编程比较陌生,但熟悉python的基本概念。我的问题是: 我做了一个程序,它接受2个输入,检查它们的长度是否小于8位,并且只包含1和0。一旦它接收到并验证了它的2个二进制输入,它就把它们都转换成二元数,并将它们相加得到总数。一旦计算出总数,它会将其转换回二进制并显示出来。 我有所有的计算和输出工作,但第一位是造成我的麻烦。我想把所有输入的验证放入一个循环中,这样当条件不满足时,它将继续请求输入,并且不允许接受任何不以8位二进制形式存在的输入。 我已经尝试了很多天了,最后决定向这里的专家寻求帮助:P希望有人能帮助我,我将非常感谢进一步了解循环。谢谢,这是我当前的代码:)

valid = 0
while valid == 0 or correctcharacter == 0:
    firstnumber = input("First number is...")
    valid = 1
    correctcharacter = 0
    while correctcharacter == 0:
        correctcharacter = 1
        for number in firstnumber:
            if number != "0" and number != "1":
                valid = 0
                correctcharacter = 0

                if len(firstnumber) > 8:
                    valid = 0
#_________________________________________________________________________________________________________
valid = 0
while valid == 0:
    secondnumber = input("Second number is...")
    valid = 1
    correctcharacter = 0
    while correctcharacter == 0:
        correctcharacter = 1
        for number in secondnumber:
            if number != "0" and number != "1":
                valid = 0
                correctcharacter = 0

                if len(secondnumber) > 8:
                    valid = 0
#_________________________________________________________________________________________________________
multiple = 1
final1 = 0

for number in firstnumber[::-1]:
    final1 = final1 + int(number) * multiple
    multiple = multiple * 2

multiple = 1
final2 = 0

for number in secondnumber[::-1]:
    final2 = final2 + int(number) * multiple
    multiple = multiple * 2
#_________________________________________________________________________________________________________
total = final1 + final2

number = total
output = str()

while number > 0:
    output = str(number % 2) + output
    number = int(number / 2)

print("")
print("The total of {} and {} is {}.".format(firstnumber, secondnumber, output))

Tags: innumberforoutputifis二进制multiple
1条回答
网友
1楼 · 发布于 2024-06-17 11:31:05

如果其他人需要帮助,我就这样解决了我的问题: http://docs.python.org/2/library/re.html

import re
valid = 0

while valid == 0:
    valid = 1
    firstnumber = input("Please enter firstnumber... ")
    if not re.match("^[0-1]{1,8}$", firstnumber):
        valid = 0
        print("Error! This program only accepts up to 8 0s and 1s!")

相关问题 更多 >