我无法在体重函数中使for循环正常工作。目的是让用户输入他们要评估的PIN数,程序应提示用户(多次)输入9位数的PIN。 PIN的“权重”是两者之间的绝对差之和 相邻数字。(例如:1234 = abs(1-2)+ abs(2-3)+ abs(3-4)= 3)
我得到了向用户询问PIN的程序,但是一旦定义了重量,就会遇到问题。
每次输入PIN后,我希望它告诉用户“重量”。 我在返回后在for循环中调用函数:
for i in range(pin_num):
prompt_user()
weight(pin)
def weight(value):
int_values = [] # Create an empty list to store the integers
for char in value:
int_values.append(int(char)) # Converts char to int and adds to list.
weight=abs(int_values[0] - int_values[1]) + abs(int_values[1]
- int_values[2])+ abs(int_values[2]
- int_values[3])+abs(int_values[3] - int_values[4])+abs(int_values[4]
- int_values[5])+abs(int_values[5] - int_values[6])+abs(int_values[6]
- int_values[7])+abs(int_values[7] - int_values[8])
#pin_weight = weight(pin)
print('The PIN {} has a weight of {}'.format(pin,weight))
return
答案 0 :(得分:0)
您正在尝试在循环的第一次迭代中计算namespace WindowsApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
webBrowser1.Navigate("http://111.93.133.133/XPAYB2C_UAT");
}
public void Form1_Load(object sender, EventArgs e)
{
var page = @"
<html>
<body>
<iframe width='560' height='315'
X-Frame-Options:'sameorigin'
src ='http://111.93.133.133/XPAYB2C_UAT' frameborder='0' allowfullscreen>
</iframe>
</body>
<html>";
webBrowser1.DocumentText = page;
webBrowser1.ScriptErrorsSuppressed = true;
//< meta http - equiv = "X-Frame-Options"content = "allow" >
}
}
}
:
weight
答案 1 :(得分:0)
@Chinyere,您的代码存在问题 您将权重计算放在不正确的for循环中
def weight(value):
int_values = [] # Create an empty list to store the integers
for char in value:
int_values.append(int(char)) # Converts char to int and adds to list.
# You put weight inside the for loop which was incorrect
weight=abs(int_values[0] - int_values[1]) + \
abs(int_values[1] - int_values[2]) + \
abs(int_values[2] - int_values[3]) + \
abs(int_values[3] - int_values[4]) + \
abs(int_values[4] - int_values[5]) + \
abs(int_values[5] - int_values[6]) + \
abs(int_values[6] - int_values[7]) + \
abs(int_values[7] - int_values[8])
print('The PIN {} has a weight of {}'.format(pin,weight))
return
for i in range(1):
pin=input()
weight(pin)
答案 2 :(得分:0)
您的打印和退货位于for循环内。我很确定您不希望它们出现,因此您需要将前导空格减少四个。可能计算也不属于其中。
答案 3 :(得分:0)
在您的代码中,您应该像上面已经提到的其他那样,将计算和打印代码从循环范围之外。但是您可以使用zip
进行以下操作,如下所示-
def weight(value):
w = 0
for x, y in zip(value, value[1:]):
w += abs(int(x) - int(y))
<rest of your code>
此外,对于函数和变量,您不应使用相同的名称(weight
)