如果我在第一次尝试"Access Granted"
时正确输入密码,我的程序只会打印"Secret password request : "
。如果我在其他尝试中输入正确的密码,让我们说第二或第六,即使我输入正确的密码,它也会重复"Acces Denied, try again : "
。任何帮助如何解决这个问题?
my_input = input(str("Secret password request : "))
my_input = my_input.lower()
password = "secret1379"
condition = my_input == password
if condition:
print("Access granted")
while not condition:
my_input = input("Acces Denied, try again : ")
if condition:
print("Access granted")
答案 0 :(得分:0)
仅仅因为您在循环中更改了n3
,并不意味着my_input
会发生变化。它仍会将旧condition
与my_input
进行比较,因此您必须重新分配password
。
您的代码可以在没有此功能的情况下运行,但您也可以删除循环中的condition = my_input.lower() == password
,然后删除if
,因为当print("Access granted")
变为真时循环结束。
答案 1 :(得分:0)
package hushtagstudios.com.towme;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.format.DateFormat;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.directions.route.AbstractRouting;
import com.directions.route.Route;
import com.directions.route.RouteException;
import com.directions.route.Routing;
import com.directions.route.RoutingListener;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import org.json.JSONException;
import org.json.JSONObject;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
import java.util.Map;
public class HistorySingleActivity extends AppCompatActivity implements OnMapReadyCallback, RoutingListener {
private String rideId, currentUserId, customerId, driverId, userDriverOrCustomer;
private TextView rideLocation;
private TextView rideDistance;
private TextView rideDate;
private TextView userName;
private TextView userPhone;
private ImageView userImage;
private RatingBar mRatingBar;
private Button mPay;
private DatabaseReference historyRideInfoDb;
private LatLng destinationLatLng, pickupLatLng;
private String distance;
private Double ridePrice;
private Boolean customerPaid = false;
private GoogleMap mMap;
private SupportMapFragment mMapFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_history_single);
polylines = new ArrayList<>();
rideId = getIntent().getExtras().getString("rideId");
mMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mMapFragment.getMapAsync(this);
rideLocation = (TextView) findViewById(R.id.rideLocation);
rideDistance = (TextView) findViewById(R.id.rideDistance);
rideDate = (TextView) findViewById(R.id.rideDate);
userName = (TextView) findViewById(R.id.userName);
userPhone = (TextView) findViewById(R.id.userPhone);
userImage = (ImageView) findViewById(R.id.userImage);
mRatingBar = (RatingBar) findViewById(R.id.ratingBar);
currentUserId = FirebaseAuth.getInstance().getCurrentUser().getUid();
historyRideInfoDb = FirebaseDatabase.getInstance().getReference().child("history").child(rideId);
getRideInformation();
}
private void getRideInformation() {
historyRideInfoDb.addListenerForSingleValueEvent(new ValueEventListener() {
@SuppressLint("SetTextI18n")
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
for (DataSnapshot child:dataSnapshot.getChildren()){
if (child.getKey().equals("customer")){
customerId = child.getValue().toString();
if(!customerId.equals(currentUserId)){
userDriverOrCustomer = "Drivers";
getUserInformation("Customers", customerId);
}
}
if (child.getKey().equals("driver")){
driverId = child.getValue().toString();
if(!driverId.equals(currentUserId)){
userDriverOrCustomer = "Customers";
getUserInformation("Drivers", driverId);
displayCustomerRelatedObjects();
}
}
if (child.getKey().equals("timestamp")){
rideDate.setText(getDate(Long.valueOf(child.getValue().toString())));
}
if (child.getKey().equals("rating")){
mRatingBar.setRating(Integer.valueOf(child.getValue().toString()));
}
if (child.getKey().equals("customerPaid")){
customerPaid =true;
}
if (child.getKey().equals("distance")){
distance = child.getValue().toString();
rideDistance.setText(distance.substring(0, Math.min(distance.length(), 5)) + " km");
ridePrice = Double.valueOf(distance) * 0.5;
}
if (child.getKey().equals("destination")){
rideLocation.setText(child.getValue().toString());
}
if (child.getKey().equals("location")){
pickupLatLng = new LatLng(Double.valueOf(child.child("from").child("lat").getValue().toString()), Double.valueOf(child.child("from").child("lng").getValue().toString()));
destinationLatLng = new LatLng(Double.valueOf(child.child("to").child("lat").getValue().toString()), Double.valueOf(child.child("to").child("lng").getValue().toString()));
if(destinationLatLng != new LatLng(0,0)){
getRouteToMarker();
}
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void getUserInformation(String otherUserDriverOrCustomer, String otherUserId) {
DatabaseReference mOtherUserDB = FirebaseDatabase.getInstance().getReference().child("Users").child(otherUserDriverOrCustomer).child(otherUserId);
mOtherUserDB.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
if(map.get("name") != null){
userName.setText(map.get("name").toString());
}
if(map.get("phone") != null){
userPhone.setText(map.get("phone").toString());
}
if(map.get("profileImageUrl") != null){
Glide.with(getApplication()).load(map.get("profileImageUrl").toString()).into(userImage);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void displayCustomerRelatedObjects() {
mRatingBar.setVisibility(View.VISIBLE);
mPay.setVisibility(View.VISIBLE);
mRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
historyRideInfoDb.child("rating").setValue(rating);
DatabaseReference mDriverRatingDb = FirebaseDatabase.getInstance().getReference().child("Users").child("Drivers").child(driverId).child("rating");
mDriverRatingDb.child(rideId).setValue(rating);
}
});
if (customerPaid) {
mPay.setEnabled(false);
} else {
mPay.setEnabled(true);
}
}
private String getDate(Long time) {
Calendar cal = Calendar.getInstance(Locale.getDefault());
cal.setTimeInMillis(time*1000);
String date = DateFormat.format("MM-dd-yyyy hh:mm", cal).toString();
return date;
}
private void getRouteToMarker() {
Routing routing = new Routing.Builder()
.travelMode(AbstractRouting.TravelMode.DRIVING)
.withListener(this)
.alternativeRoutes(false)
.waypoints(pickupLatLng, destinationLatLng)
.build();
routing.execute();
}
@Override
public void onMapReady(GoogleMap googleMap) {
private List<Polyline> polylines;
private static final int[] COLORS = new int[]{R.color.primary_dark_material_light};
}
@Override
public void onRoutingFailure(RouteException e) {
if(e != null) {
Toast.makeText(this, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}else {
Toast.makeText(this, "Something went wrong, Try again", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onRoutingStart() {
}
@Override
public void onRoutingSuccess(ArrayList<Route> route, int shortestRouteIndex) {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(pickupLatLng);
builder.include(destinationLatLng);
LatLngBounds bounds = builder.build();
int width = getResources().getDisplayMetrics().widthPixels;
int padding = (int) (width*0.2);
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, padding);
mMap.animateCamera(cameraUpdate);
mMap.addMarker(new MarkerOptions().position(pickupLatLng).title("pickup location").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_pickup)));
mMap.addMarker(new MarkerOptions().position(destinationLatLng).title("destination"));
if(polylines.size()>0) {
for (Polyline poly : polylines) {
poly.remove();
}
}
polylines = new ArrayList<>();
//add route(s) to the map.
for (int i = 0; i <route.size(); i++) {
//In case of more than 5 alternative routes
int colorIndex = i % COLORS.length;
PolylineOptions polyOptions = new PolylineOptions();
polyOptions.color(getResources().getColor(COLORS[colorIndex]));
polyOptions.width(10 + i * 3);
polyOptions.addAll(route.get(i).getPoints());
Polyline polyline = mMap.addPolyline(polyOptions);
polylines.add(polyline);
Toast.makeText(getApplicationContext(),"Route "+ (i+1) +": distance - "+ route.get(i).getDistanceValue()+": duration - "+ route.get(i).getDurationValue(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void onRoutingCancelled() {
}
private void erasePolylines(){
for(Polyline line : polylines){
line.remove();
}
polylines.clear();
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
}
}